2016-02-13 113 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