2011-10-28 60 views
3

我一直在試圖弄清楚如何在兩個視圖之間傳遞一個變量,並且我已經查看了堆棧溢出的所有示例,並且我似乎無法使其工作。Rails中的視圖之間傳遞變量

我有這個在我的用戶 - > index.html.erb

<% @users.each do |user| %> 
    <tr> 
    <td><%= user.name %></td> 
    <td><%= user.email %></td> 
    <td><%= user.id %></td> 
    <td><%= link_to 'Profile', user %></td> 
    <td><%= link_to 'Connect', new_relationship_path, :id => user.id %><td> 
    </tr> 
<% end %> 

我試圖user.id傳遞給我的關係 - > new.html.erb視圖。

在我的控制,我有:

class RelationshipsController < ApplicationController 
    def new 
     @id = params[:id] 
    end 
end 

和finially我有關係 - > new.html.erb

<section id="main"> 
    <h1>Sign Up</h1> 
    <td><%= @id %></td> 
</section> 

我相信:ID沒有被正確傳遞。我從其他所有例子中錯過了什麼?我沒有錯誤,只是沒有顯示。

回答

6

link_to 'Connect', new_relationship_path, :id => user.id 

正通:ID作爲html_option到的link_to,所以它會被用來作爲你的鏈接元素的「id」屬性。你想,而不是什麼是它作爲參數傳遞到路由助手:

link_to 'Connect', new_relationship_path(:id => user.id) 
3

如果用戶有一個或多對多的關係,它可能是更聰明的用戶嵌套的路線。

那麼你將能夠通過直接的url爲特定用戶創建關係。

如:new_user_relationship_path(用戶)#=> /用戶/ 2134 /關係/新

那麼在你們的關係控制器PARAMS [:USER_ID]將評估爲2134

你應該看看:http://guides.rubyonrails.org/routing.html

+0

這太棒了。感謝您指出了這一點! –