我有一个简单的问题:
何处放置控制器多次调用的辅助方法?
我希望保持清除我的控制器(user_controller),并且我有一个多次调用的辅助方法(check_permits)
是否可以将此方法放在user_helper中?
如果是==> 如何在user_controller中调用它?如果我只是回想起check_permits,它就不会认出它
如果没有==> ,在哪里放置辅助方法?
答案 0 :(得分:4)
您使用的是令人困惑的术语。在rails中,控制器没有帮助程序。助手被定义为视图。可以通过使用“helpers”方法从控制器调用辅助方法(参见http://api.rubyonrails.org/classes/ActionController/Helpers/ClassMethods.html),但我不认为这是你正在寻找的(并且通常这不是一个好主意)。 / p>
您可能想要的是(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
答案 1 :(得分:0)
您可以将全局帮助程序方法放在application_helper.rb文件中,但如果它只由一个控制器使用,则每个控制器都可以拥有自己的帮助程序文件。查看app / helper(或app / controller / helper)。