在 Rails 中的视图之间传递变量
Posted
技术标签:
【中文标题】在 Rails 中的视图之间传递变量【英文标题】:Pass Variable between Views in Rails 【发布时间】:2011-10-28 16:16:15 【问题描述】:我一直试图弄清楚如何在两个视图之间传递一个变量,并且我查看了有关堆栈溢出的所有示例,但我似乎无法使其工作。
我的用户中有这个 -> 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
最后我有了关系 -> new.html.erb
<section id="main">
<h1>Sign Up</h1>
<td><%= @id %></td>
</section>
我相信 :id 没有正确传递。我从所有其他示例中遗漏了什么?我没有收到任何错误,只是没有显示任何内容。
【问题讨论】:
【参考方案1】:这个
link_to 'Connect', new_relationship_path, :id => user.id
将 :id 作为 html_option 传递给 link_to,因此它将用作链接元素的“id”属性。你想要的是将它作为参数传递给路由助手:
link_to 'Connect', new_relationship_path(:id => user.id)
【讨论】:
【参考方案2】:如果用户有一个或多个关系,那么用户嵌套路由可能会更聪明。
然后您将能够通过直接 url 为特定用户创建关系。
例如:new_user_relationship_path(user) # => /user/2134/relationship/new
然后在您的关系控制器中,params[:user_id] 将评估为 2134
你应该看看:http://guides.rubyonrails.org/routing.html
【讨论】:
以上是关于在 Rails 中的视图之间传递变量的主要内容,如果未能解决你的问题,请参考以下文章
如何在 Rails 视图中将 Ruby 变量传递给 JavaScript 函数?