2011-10-28 10 views
3

私は2つのビュー間で変数を渡す方法を理解しようとしていますが、スタックオーバーフローに関するすべての例を見てきました。Railsのビュー間で変数を渡す

私は私のユーザーでこれを持っている - > new.html.erbビュー - > 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を渡すためにしようとしています。

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が正しく渡されていません。私は他のすべての例から何が欠けていますか?私はエラーもなく、何も表示されません。 link_toにhtml_optionとしてのid、それはあなたのリンク要素の「ID」属性として使用されます。この

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

答えて

6

が通過しています。あなたが代わりに欲しいのは、ルートヘルパーへのパラメータとして渡すことです:

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

ユーザーは、1体のまたは多くの関係を持っている場合、それはユーザーネストされたルートに賢く可能性があります。

直接URLを使用して特定のユーザーの関係を作成することができます。

例:新しいnew_user_relationship_path(ユーザー)#=> /ユーザー/ 2134 /関係/

あなたの関係コントローラで、その後

のparams [:user_idを] 2134

に評価されます、あなたが見なければならない:http://guides.rubyonrails.org/routing.html

+0

これは素晴らしいです。これを指摘してくれてありがとう! –