Контроллер вызывает помощника - PullRequest
1 голос
/ 17 января 2011

У меня простой вопрос: Куда поместить вспомогательные методы, которые многократно вызывается контроллером?
Я хочу, чтобы мой контроллер (user_controller) был чистым, и у меня есть вспомогательные методы.это вызывается много раз (check_permits) возможно ли поместить этот метод в user_helper?

Если yes ==> как вызвать его внутри user_controller?Если я просто вспоминаю check_permits, он не распознает его.
Если нет ==> , где разместить вспомогательные методы?

Ответы [ 2 ]

4 голосов
/ 17 января 2011

Вы используете запутанную терминологию.В рельсах у контроллеров нет помощников.Помощники определяются как предназначенные для представлений.Можно вызвать вспомогательные методы из контроллера, используя метод "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
0 голосов
/ 17 января 2011

Вы можете поместить глобальные вспомогательные методы в файл application_helper.rb, но если он используется только одним контроллером, каждый контроллер может иметь свой собственный вспомогательный файл. Посмотрите приложение / помощник (или приложение / контроллер / помощник).

...