除了使用路由帮助方法之外,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,这是资源式路由带来的主要好处之一。