link_to指向路由路径拼接详解

除了使用路由帮助方法之外,Rails 还能从参数数组中创建路径和 URL。例如,假设有如下路由:

resources :magazines do
   resources :ads
end

使用 magazine_ad_path 时,可以不传入数字 ID,传入 Magazine 和 Ad 实例即可:

<%= link_to 'Ad details' , magazine_ad_path( @magazine , @ad ) %>

而且还可使用 url_for 方法,指定一组对象,Rails 会自动决定使用哪个路由:

<%= link_to 'Ad details' , url_for([ @magazine , @ad ]) %>

此时,Rails 知道 @magazine 是 Magazine 的实例,@ad 是 Ad 的实例,所以会调用 magazine_ad_path 帮助方法。使用 link_to 等方法时,无需使用完整的 url_for 方法,直接指定对象即可:

<%= link_to 'Ad details' , [ @magazine , @ad ] %>

如果想链接到一本杂志,可以这么做:

<%= link_to 'Magazine details' , @magazine %>

要想链接到其他动作,把数组的第一个元素设为所需动作名即可:

<%= link_to 'Edit Ad' , [ :edit , @magazine , @ad ] %>

在这种用法中,会把模型实例转换成对应的 URL,这是资源式路由带来的主要好处之一。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值