【问题标题】:Ruby on Rails variable visibilityRuby on Rails 变量可见性
【发布时间】:2016-02-17 19:20:16
【问题描述】:

我有许多控制器,我在其中设置变量,以便适当的视图可以看到这些变量。例如,

class UsersController < ApplicationController
...
def index
  @users = User.all
end
...

这行得通。那么为什么这不起作用:

class PlacesController < ApplicationController
...
def show
  @params = params
end
...

如果我在 show-method 中通过调试,我可以访问参数。如果我在视图中 byebug (places/show.html.erb),则 "params" 和 "@params" 返回 nil。

这是否与“用户”是 ActiveRecord 而“地点”不是这一事实有关?如何使视图可以访问任意数据?

【问题讨论】:

  • 您不需要创建新变量@params,因为params 在视图中也可用。
  • 当我尝试在视图中使用参数时,它返回 nil。

标签: ruby-on-rails ruby model-view-controller parameters parameter-passing


【解决方案1】:

您可以在 /places 视图中使用控制器实例变量 @params。但是因为你没有传递任何参数,params 返回nil。 所以,如果这个变量不可见,你会得到NameError。 尝试像@params = { foo: "bar" } 一样直接设置@params,你会看到。 更多关于 Rails 中的参数here(#4 参数)。

【讨论】:

  • 这不应该发生,因为params总是包含:controller:action,即使你没有传递任何参数。某处应该有错误。 params 始终是 Hash,不能是 nil
猜你喜欢
  • 2015-08-30
  • 2012-12-28
  • 2012-09-24
  • 2013-02-21
  • 1970-01-01
  • 2017-01-26
  • 2017-10-11
  • 2011-07-23
  • 2013-07-05
相关资源
最近更新 更多