我有一个简单的问题:
将控制器多次调用的辅助方法放在哪里?
我的愿望是清除我的控制器(user_controller)并且我有一个多次调用的辅助方法(check_permits)
是否可以将此方法放在 user_helper 中?
如果是 ==>如何在 user_controller 中调用它?如果我只记得 check_permits 它不会识别它。
如果没有 ==>,将辅助方法放在哪里?
问问题
683 次
2 回答
4
您正在使用令人困惑的术语。在 Rails 中,控制器没有助手。助手被定义为视图。可以使用“帮助器”方法从控制器调用帮助器方法(请参阅http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html),但我不认为那是你的寻找(通常这不是一个好主意)。
您可能想要的是(1)将方法直接放在您的 users_controller.rb 中作为受保护的方法:
class UsersController < ApplicationController
...
protected
def check_permits
...
end
end
或者 (2) 如果您从多个控制器调用它,请将其放在 application_controller.rb 中。
或者 (3) 将其作为模块放入库文件中,并将其包含在任何需要它的控制器中。例如,您可以创建 lib/check_permits.rb:
module CheckPermits
protected
def check_permits
...
end
end
然后在 users_controller.rb 中:
class UsersController < ApplicationController
include CheckPermits
...
end
于 2011-01-17T18:10:11.680 回答
0
您可以将全局帮助方法放在 application_helper.rb 文件中,但如果它仅由一个控制器使用,则每个控制器都可以拥有自己的帮助文件。查看 app/helper(或 app/controller/helper)。
于 2011-01-17T18:01:42.793 回答