2011-01-17 3 views
1

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

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

ответ

0

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

4

Вы используете путаную терминологию. В рельсах контроллеры не имеют помощников. Помощники определяются как относящиеся к представлениям. Вы можете вызвать вспомогательные методы с контроллера с помощью метода «помощников» (см. 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) поместить его в файл библиотеки как модуль и включить его в какие-либо контроллеры. Например, вы можете создать Библиотека/check_permits.rb:

module CheckPermits 
    protected 
    def check_permits 
     ... 
    end 
end 

А потом в users_controller.rb:

class UsersController < ApplicationController 
    include CheckPermits 
    ... 
end