2011-10-28 9 views
3

저는 두 뷰 사이에서 변수를 전달하는 방법을 알아 내려고했습니다. 그리고 스택 오버플로에 대한 모든 예제를 살펴 봤지만 제대로 작동하지 않는 것 같습니다.레일에서 뷰 간 변수를 교환합니다.

나는 내 사용자이이 -> index.html.erb 내 관계 user.id 전달하기 위해 노력하고있어

<% @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 %> 

-> 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가 제대로 전달되지 않습니다. 다른 모든 예에서 나는 무엇을 놓치고 있습니까? 오류가 없으며 아무 것도 표시되지 않습니다. 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

, 그것은 사용자가 중첩 된 경로에 스마트 될 수 있습니다.

그러면 직접 URL을 통해 특정 사용자에 대한 관계를 만들 수 있습니다.

예 : 새로운 new_user_relationship_path (사용자) # =>/사용자/2134/관계/

관계 컨트롤러에서 다음

PARAMS [: USER_ID] 2134

로 평가 것입니다 당신이 보라 : http://guides.rubyonrails.org/routing.html

+0

이것은 대단합니다. 이것을 지적 해 주셔서 감사합니다! –