控制器调用帮助器

时间:2011-01-17 17:57:23

标签: ruby-on-rails controller helper redundancy

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

如果是==> 如何在user_controller中调用它?如果我只是回想起check_permits,它就不会认出它 如果没有==> ,在哪里放置辅助方法?

2 个答案:

答案 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)。