Ruby on Rails:控制器和视图可用的常用方法?

时间:2014-06-06 18:43:49

标签: ruby-on-rails ruby authentication ruby-on-rails-4

我一直在使用Ruby on Rails很短的时间。最近我为我的应用程序实现了一个认证系统。我在' application_helper.rb'上提供了一个方法。检索当前记录的用户(名为current_user的方法)。

如果User变量存在,该方法只会检索我的session[:user_id]对象。

但是我面临以下问题。

  1. 如果我将current_user方法放入' application_helper.rb ',我的控制器无法使用它
  2. 如果我将current_user方法放在' application_controller.rb '中,我的观看次数就无法使用它
  3. 解决此问题的最佳方法是什么?简单的方法是在控制器和帮助器中复制我的代码,但我知道有更好更正确的方法。

    提前致谢

1 个答案:

答案 0 :(得分:7)

这是一个常见且解决得很好的问题。

Rails不允许控制器访问辅助方法。如果要在视图和控制器之间共享方法,则需要在控制器中定义方法,然后使用helper_method使其可用于您的视图:

class ApplicationController < ActionController::Bbase

  # Let views access current_user
  helper_method :current_user

  def current_user
    # ...
  end

end

您可以将多个方法名称传递给helper_method,以使您的控制器中的其他方法可用于您的视图:

  helper_method :current_user, :logged_in?

  def current_user
    # ...
  end

  def logged_in?
    !current_user.nil?
  end
相关问题