在 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 函数?

如何在Rails视图中将Ruby变量传递给JavaScript函数?

如何在swiftui中的视图之间传递变量?

在视图中传递类名(rails)

如何在 Swift 中的视图控制器之间传递数据?

如何从rails中的视图将值传递给jquery?