rails4 routes基本使用

本文详细介绍了Rails 4中路由的基本使用方法,包括限制HTTP方法、简写方式、同一URL对应多个HTTP方法、SegmentKeys、OptionalSegmentKeys、RedirectRoutes、SegmentKeyConstraints、RouteGlobbing、Namedroutes、Levelup、ScopingRoutingRules等特性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

rails4 routes基本使用

限制http method

基本方式

match 'products/:id' => 'products#show', via: :get

简写

get 'products/:id' => 'products#show'
post 'products' => 'products#create'

同一个url对应多个http method

match 'products/:id' => 'products#show', via: [:get, :post]

一个url对应所有http method

match 'products' => 'products#index', via: :any

Segment Keys

基本方式

get 'products/:id' => 'products#show'

这样的话http://example.com/products/4,params[:id] = 4;

link_to "Products",
        controller: "products",
        action: "show",
        id: 1

Optional Segment Keys

如下所示,用小括号()

aatch ':controller(/:action(/:id(.:format)))', via: :any

Redirect Routes

定义routes时直接定义跳转逻辑,使用redirect方法

get "/google", to: redirect('https://google.com/')

redirect方法接受block,可以接收params参数

下面实现了api的version跳转,api内部逻辑升级,但对外接口保持不变

match 'api/v1/:api',
      to: redirect { |params| "api/v2/#{params[:api].pluralize}" },
      via: any

redirect方法可以设置跳转时的status

match "/api/v1/:api", to:
  redirect(status: 302) { |params| "/api/v2/#{params[:api].pluralize}" },
  via: :any

Segment Key Constraints

get ':controller/show/:id' => :show, constraints: {:id => /\d+/}
get ':controller/show/:id' => :show_error

上面的例子里就不需要在controller里判断id是否合法了。另外routes里默认正则默认加\A#regexp#\z的

由于经常要对id的格式做限制,上面的例子有简写的办法

get ':controller/show/:id' => :show, id: /\d+/
get ':controller/show/:id' => :show_error

constraints也可以接收block

get 'records/:id' => "records#protected",
constraints: proc { |req| req.params[:id].to_i < 100 }

Route Globbing

对于这个url /items/list/base/books/fiction

get 'items/list/*specs', controller: 'items', action: 'list'

可以得到params[:specs] = base/books/fiction

Named routes

基本用法

get 'help' => 'help#index' as: 'help'

link_to "Help", help_path

Level up

对于下面的link_to调用

get "item/:id" => "items#show"

link_to "Auction of #{item.name}", controller: "items",
action: "show",
id: item.id

可以定义为

get "item/:id" => "items#show", as: "item"

link_to "Auction of #{item.name}", item_path(id: item.id)

加点语法糖衣,等于

link_to "Auction of #{item.name}", item_path(item.id)

link_to "Auction of #{item.name}", item_path(item)

Level up

对于多个参数,要按顺序传

get "auction/:auction_id/item/:id" => "items#show", as: "item"

link_to "Auction of #{item.name}", item_path(auction, item)

Level up

隐藏id,创建更可读的url

defto_param
  description.parameterize 
end

item_path(auction, item) => /auction/3/item/cello-bow

Scoping Routing Rules

scope之前

get'auctions/new'=>'auctions#new' 
get'auctions/edit/:id'=>'auctions#edit' 
post'auctions/pause/:id'=>'auctions#pause'

scope之后

scope controller::auctions do
  get 'auctions/new' => :new
  get 'auctions/edit/:id' => :edit 
  post 'auctions/pause/:id' => :pause
end

scope path后

scope path:'/auctions',controller::auctions do 
  get 'new' => :new
  get 'edit/:id' => :edit
  post 'pause/:id' => :pause
end

使用name prefix

scope:auctions,as:'admin' do
  get 'new' => :new, as: 'new_auction' #=>link_to 'xxx', admin_new_auction_url
end

namespace隐式定义了controller和path以及prefix name

namespace :auctions,:controller=>:auctions do 
  get 'new' => :new
  get 'edit/:id' => :edit
  post 'pause/:id' => :pause
end
电动汽车数据集:2025年3K+记录 真实电动汽车数据:特斯拉、宝马、日产车型,含2025年电池规格和销售数据 关于数据集 电动汽车数据集 这个合成数据集包含许多品牌和年份的电动汽车和插电式车型的记录,捕捉技术规格、性能、定价、制造来源、销售和安全相关属性。每一行代表由vehicle_ID标识的唯一车辆列表。 关键特性 覆盖范围:全球制造商和车型组合,包括纯电动汽车和插电式混合动力汽车。 范围:电池化学成分、容量、续航里程、充电标准和速度、价格、产地、自主水平、排放、安全等级、销售和保修。 时间跨度:模型跨度多年(包括传统和即将推出的)。 数据质量说明: 某些行可能缺少某些字段(空白)。 几个分类字段包含不同的、特定于供应商的值(例如,Charging_Type、Battery_Type)。 各列中的单位混合在一起;注意kWh、km、hr、USD、g/km和额定值。 列 列类型描述示例 Vehicle_ID整数每个车辆记录的唯一标识符。1 制造商分类汽车品牌或OEM。特斯拉 型号类别特定型号名称/变体。型号Y 与记录关联的年份整数模型。2024 电池_类型分类使用的电池化学/技术。磷酸铁锂 Battery_Capacity_kWh浮充电池标称容量,单位为千瓦时。75.0 Range_km整数表示充满电后的行驶里程(公里)。505 充电类型主要充电接口或功能。CCS、NACS、CHAdeMO、DCFC、V2G、V2H、V2L Charge_Time_hr浮动充电的大致时间(小时),上下文因充电方法而异。7.5 价格_USD浮动参考车辆价格(美元).85000.00 颜色类别主要外观颜色或饰面。午夜黑 制造国_制造类别车辆制造/组装的国家。美国 Autonomous_Level浮点自动化能力级别(例如0-5),可能包括子级别的小
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值