6

几天来,我一直在与范围作斗争。我想为所有视图和控制器提供少量方法。假设代码是:

def login_role
  if current_user
    return current_user.role
  end
  return nil
end

如果我将它包含在 application_helper.rb 中,那么它仅适用于所有 View,但不适用于所有 Controller

如果我将它包含在 application_controller.rb 中,那么它可用于所有控制器,但不适用于所有视图。

4

2 回答 2

30

使用helper_method您的方法ApplicationController授予视图访问权限。

class ApplicationController < ActionController::Base

  helper_method :login_role

  def login_role
    current_user ? current_user.role : nil
  end

end

考虑将所有相关方法放在它们自己的模块中,然后您可以像这样使它们全部可用:

helper LoginMethods

于 2012-07-02T13:50:01.903 回答
-4

创建您自己的库(它可以包含类、模块、方法),并将其放在 lib 目录中。我们称它为 my_lib.rb。

在您的 application_controller.rb 和 application_helper.rb 添加以下行:

require 'my_lib'

这将使所有的类、模块、方法对所有视图和控制器都可用

于 2012-07-02T13:43:53.497 回答