Rails路由 - 将唯一ID传递给url

时间:2013-12-08 18:07:55

标签: ruby-on-rails ruby routes

我在视图中有以下内容:

<dl class="dl-horizontal">
<% @people.each do |person| %>
<dt> <%= person[:name] %> </dt>
<dd> <%= button_to('Check', person_check_path, :class => 'btn btn-medium btn-primary', :method => :get)  %>
<% end %>

此视图代表的网址为:www.website.com/{town_id}/person/

person_check_path看起来像这样:

www.website.com/{town_id}/person/{person.id}/check

我的问题是如何动态地将person.id传递给person_check_path?现在,上面的按钮每次都链接到同一个网址,但我需要根据点击该按钮的人来更改。

1 个答案:

答案 0 :(得分:3)

首先,你应该在路线中添加新的获取请求,类似于:

get "/:town_id/person/:person_id/check" => "town#check", :as => :check_town_with_person

然后您可以从任何地方呼叫路线,例如:

link_to "My Link", check_town_with_person_path(:town_id => @town.id, :person_id => @person.id)

请记住,这些字段(在路线中设置)是必需的。你甚至可以用这种方式添加一些非强制性的参数:

 link_to "My Link", check_town_with_person_path(:town_id => @town.id, :person_id => @person.id, :another_var => "my_var")
=> /3/person/1/check?another_var=my_var