在Rails 3.2.16中,我已经设置了一条路径,用#show显示一个带有强制动态参数的联系人。如果未指定参数,则另一个路由包括重定向默认值。
路由rb (已编辑以显示resources
行)
resources :contacts, :except => :show
match 'contacts/:id' => redirect("/contacts/%{id}/from"), :via => "get"
match 'contacts/:id/:category' => 'contacts#show',
:via => "get",
:constraints => { :category => /from|to|about/ }
此
link_to "From", contact_path(@contact, :category => "to")
生成此链接:
http://0.0.0.0:3000/contacts/1?category=to
换句话说,它正确地将:id
转换为路径的一部分,但然后将category
作为单独的参数附加。默认路由会看到没有:category
的路径,并将其重定向回/contacts/1/from
。
如何编写将生成此HTML的link_to
?
http://0.0.0.0:3000/contacts/1/to
答案 0 :(得分:1)
在您的routes.rb中:
match 'contacts/:id/:category', :to => 'contacts#show',
:via => "get",
:constraints => { :category => /from|to|about/ },
:as => :something
然后你打电话
link_to "From", something_path(@contact, "to")
答案 1 :(得分:0)
Stavros的回答有效,可能是最好的解决方案。作为另一种选择,我意识到contact_path(@contact)
只是返回一个字符串,所以没有对routes.rb进行任何修改,我可以写
link_to "From", contact_path(@contact) + "/to"