在某些视图中无法识别控制器变量

时间:2016-03-10 11:14:39

标签: ruby-on-rails ruby view scope redmine

如何在Ruby上的应用程序控制器和不同视图之间传递变量?是否有任何全局范围可以帮助我们跟踪控制器中创建的任何变量并将其用于同一应用程序中的任何视图代码中?

4 个答案:

答案 0 :(得分:0)

要在视图中使用应用程序控制器中的方法,请将其标记为辅助方法。 像这样的东西

class ApplicationController < ActionController::Base

  def current_user
    @current_user ||= User.find(session[:user_id])
  end

  helper_method :current_user

end

现在,current_user方法可在所有视图中访问,并且可用于获取@current_user实例变量。

答案 1 :(得分:0)

只需在应用程序帮助程序中编写代码,就可以通过应用程序中的任何视图访问它。

答案 2 :(得分:0)

请阅读http://guides.rubyonrails.org/action_controller_overview.html(特别是第3部分)

这不是最佳选择,我建议阅读有关在控制器中公开变量的内容。

https://github.com/hashrocket/decent_exposure 要么 https://github.com/netguru/decent_decoration

就是为此创建的,我推荐它们。

答案 3 :(得分:0)

如此声明的变量:

@current_user
例如,只要在控制器中为该视图调用创建该变量的方法,

就可以在任何视图中使用。

您可以在此处阅读有关ruby变量的更多信息http://ruby-doc.org/docs/ruby-doc-bundle/UsersGuide/rg/variables.html