2016-02-13 115 views
0

什么是简单的是将params传递给rails link_to?添加URL链接到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 %> 

实际的Web网址是:

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

回答

3

你是这样做除了一点小故障以外,还有一个正确的方法。

您确实通过了参数,但您尚未指定值。

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

希望这会有所帮助。

+0

啊!今天晚些时候,我不在我的笔记本电脑旁边。病后报告。 – Sylar

+1

这是没有问题的:'<%= link_to'a',release_hire_milestone_path(@ user.id,@ hire.id,amount:f.bar),class:“tiny button”,method :: get%>' – Sylar

+0

我已经标记了你的答案,但要做出修改以反映对我有用的东西 – Sylar