1

我有一个简单的问题: 将控制器多次调用的辅助方法放在哪里?
我的愿望是清除我的控制器(user_controller)并且我有一个多次调用的辅助方法(check_permits) 是否可以将此方法放在 user_helper 中?

如果是 ==>如何在 user_controller 中调用它?如果我只记得 check_permits 它不会识别它。
如果没有 ==>,将辅助方法放在哪里?

4

2 回答 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 回答