我在范围内挣扎了好几天。我希望所有视图和控制器都可以使用少量方法。 假设代码是:
def login_role
if current_user
return current_user.role
end
return nil
end
如果我将它包含在application_helper.rb中,那么它仅适用于所有视图,但不适用于所有控制器
如果我将它包含在application_controller.rb中,那么它可供所有控制器使用,但并非所有视图都可用。
答案 0 :(得分:25)
使用ApplicationController
中的helper_method
方法为视图提供访问权限。
class ApplicationController < ActionController::Base
helper_method :login_role
def login_role
current_user ? current_user.role : nil
end
end
考虑将所有相关方法放在他们自己的模块中,然后你可以使它们全部可用:
helper LoginMethods
答案 1 :(得分:-4)
创建自己的库(可以有类,模块,方法),并将其放在lib目录中。我们称之为my_lib.rb。
在您的application_controller.rb和application_helper.rb中添加以下行:
require 'my_lib'
这将使所有视图和控制器都可以使用所有类,模块和方法