在Rails中的视图之间传递变量

时间:2011-10-28 16:16:16

标签: ruby-on-rails ruby ruby-on-rails-3 variables views

我一直在试图弄清楚如何在两个视图之间传递变量,我已经查看了堆栈溢出的所有示例,我似乎无法使其工作。

我的用户中有这个 - > 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传递给我的人际关系 - &gt; new.html.erb view。

在我的控制器中我有:

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

最后我有关系 - &gt; new.html.erb

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

我相信:id未正确传递。我在其他所有例子中都缺少什么?我没有错,没有显示任何内容。

2 个答案:

答案 0 :(得分:6)

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

将:id作为html_option传递给link_to,因此它将用作link元素的“id”属性。你想要的是将它作为参数传递给路径助手:

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

答案 1 :(得分:3)

如果用户有一个或多个关系,那么使用嵌套路由会更聪明。

然后您将能够通过直接网址为特定用户创建关系。

例如:new_user_relationship_path(user)#=&gt; /用户/ 2134 /关系/新

然后在您的关系控制器中,params [:user_id]将评估为2134

你应该看一下:http://guides.rubyonrails.org/routing.html