将URL参数添加到link_to路径

时间:2016-02-13 08:50:09

标签: ruby-on-rails ruby ruby-on-rails-4

将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

1 个答案:

答案 0 :(得分:4)

除了一点小故障之外,你正在以正确的方式做到这一点。

你真的通过了参数,但你还没有指定这些值。

您需要做的是传递user_idhire_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.idhire_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 %>

希望这有帮助。