Включить пространство имен в представлениях HAML приложения пространства имен Rails 3.1

Приложение Rails 3.1 полностью реализовано в пространстве имен. Когда я вызываю представления, это пространство имен не включается, поэтому мне приходится каждый раз вводить полное имя каждого класса. Я предполагаю, что это ошибка или, по крайней мере, отсутствующая функция. Как я могу автоматически включить свое пространство имен Aef:: Newman в каждый контекст представления, чтобы мне не приходилось каждый раз вводить полное имя?

Обратите внимание, что следующая инструкция внутри шаблона представления HAML не работает, поскольку метод include не найден:

- include Aef::Newman

Оба компонента этого пространства имен имеют тип Module. Например, мои контроллеры расположены в app / controllers / aef / newman, и контроллер приложения выглядит так:

module Aef
  module Newman
    class ApplicationController < ActionController::Base

      protect_from_forgery

    end
  end
end

Есть контроллер с именем HandledAddressesController, который выглядит следующим образом:

module Aef
  module Newman
    class HandledAddressesController < ApplicationController

      def index
        @handled_addresses = HandledAddress.all
      end

    end
  end  
end

Обратите внимание, что даже модель HandledAddress на самом деле называется Aef:: Newman:: HandledAddress и находится в app / models/aef/newman/handled_address.rb.

Мой route.rb выглядит так:

resources :handled_addresses, controller: 'aef/newman/handled_addresses, only: :index

Путь к шаблону представления: app / views/aef/newman/handled_addresses/index.haml.haml

1 ответ

Решение

Во-первых, вы не должны использовать константы внутри шаблона. Установите некоторые переменные экземпляра или сделайте несколько помощников, чтобы сделать это.

Но если вы действительно хотите получить доступ к своим пространственным именам констант (классы, модули и т. Д.), То в инициализаторе вы можете:

ActionView::CompiledTemplates.send :include, Aef::Newman

ActionView компилирует все шаблоны в этот модуль.

Другие вопросы по тегам