【问题标题】:Controller calls the helper控制器调用助手
【发布时间】:2011-06-10 14:45:09
【问题描述】:

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

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

【问题讨论】:

    标签: ruby-on-rails controller helper redundancy


    【解决方案1】:

    您使用了令人困惑的术语。在 Rails 中,控制器没有助手。助手被定义为视图。可以使用“helpers”方法从控制器调用辅助方法(请参阅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
    

    【讨论】:

      【解决方案2】:

      您可以将全局帮助方法放在 application_helper.rb 文件中,但如果它仅由一个控制器使用,则每个控制器都可以拥有自己的帮助文件。查看 app/helper(或 app/controller/helper)。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-10-04
        • 1970-01-01
        相关资源
        最近更新 更多