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