направляющие: методы от модуля, включенного в контроллер, не доступный в поле зрения

Ну, для одного много вещей, которые делают правительства, не сделано теми в частном секторе. Что хороший это сделало бы для правительства для выпуска его системы сбора налогов к открытому исходному коду?

11
задан Nakilon 30 April 2016 в 13:13
поделиться

2 ответа

Если были определены непосредственно в контроллере, вам придется сделать его доступным для представлений, вызвав helper_method: method_name .

class ApplicationController < ActionController::Base

  def current_user
    # ...
  end

  helper_method :current_user
end

С модулем вы можете сделать то же самое, но это немного сложнее.

module Authentication
  def current_user
    # ...
  end

  def self.included m
    return unless m < ActionController::Base
    m.helper_method :current_user # , :any_other_helper_methods
  end
end

class ApplicationController < ActionController::Base
  include Authentication
end

Ах, да, если ваш модуль должен быть строго вспомогательным, вы можете сделать, как сказал Лихтамберг. Но опять же, вы можете просто назвать его AuthenticationHelper и поместить в папку app / helpers .

Хотя, по моему собственному опыту работы с кодом аутентификации, вы хотите, чтобы он был доступен как для контроллера, так и для представлений. Потому что обычно вы будете обрабатывать авторизацию в контроллере. Помощники доступны только представлению. (Я считаю, что они изначально предназначались как сокращение для сложных конструкций HTML.)

30
ответ дан 3 December 2019 в 02:41
поделиться

Вы заявили об этом с помощью

  helper :foo             # => requires 'foo_helper' and includes FooHelper
  helper 'resources/foo'  # => requires 'resources/foo_helper' and includes Resources::FooHelper

в ваш ApplicationController?

http://railsapi.com/doc/rails-v2.3.3.1/classes/ActionController/Helpers/ClassMethods.html#M001904

1
ответ дан 3 December 2019 в 02:41
поделиться
Другие вопросы по тегам:

Похожие вопросы: