将params传递给rails link_to的简单方法是什么?
的routes.rb
get '/users/:user_id/accounts/hires/:hire_id/release' => 'hire_milestones#release', as: 'release_hire_milestone'
HTML:
<% @foo.map do |f| %>
<b><%= m.reason %></b> at <b>£<%= m.amount_requested %></b>
<span><%= link_to 'a', release_hire_milestone_path(:user_id, :hire_id, amount: f.bar), class: "tiny button", method: :get %></span> <br/>
<% end %>
实际的网址是:
http://localhost:3000/users/1/accounts/hires/40
当我将鼠标悬停在按钮上时,会显示:
http://localhost:3000/users/user_id/accounts/hires/hire_id/release?amount=860
如何在link_to的路径中添加多个参数?
解决:
我需要改变:
<%= link_to 'a', release_hire_milestone_path(:user_id, :hire_id, amount: f.bar), class: "tiny button", method: :get %>
为:
<%= link_to 'a', release_hire_milestone_path(params[:user_id], params[:hire_id], amount: f.bar), class: "tiny button", method: :get %>
但路线中的轻微错误:hire_id
应为id
答案 0 :(得分:4)
除了一点小故障之外,你正在以正确的方式做到这一点。
你真的通过了参数,但你还没有指定这些值。
您需要做的是传递user_id
和hire_id
的值,就像传递amount
的方式一样。
如下所示:
<% @foo.map do |f| %>
<b><%= m.reason %></b> at <b>£<%= m.amount_requested %></b>
<span><%= link_to 'a', release_hire_milestone_path(user_id: <value_of_user_id>, hire_id: <value_of_hire_id>, amount: f.bar), class: "tiny button", method: :get %></span> <br/>
<% end %>
假设当前视图中有@hire
和@user
个对象...而user_id
是@user.id
和hire_id
是@hire.id
,然后上面的内容可以写成如下:
<% @foo.map do |f| %>
<b><%= m.reason %></b> at <b>£<%= m.amount_requested %></b>
<span><%= link_to 'a', release_hire_milestone_path(user_id: @user.id, hire_id: @hire.id, amount: f.bar), class: "tiny button", method: :get %></span> <br/>
<% end %>
希望这有帮助。