2011-12-23 12 views
0

My Rails 3.1アプリケーションは、名前空間内に完全に実装されています。ビューを呼び出すと、この名前空間は含まれないので、毎回各クラスの完全修飾名を入力する必要があります。私はこれがバグか少なくとも欠けている機能だと思う。毎回完全修飾名を入力する必要がないように、どのビューコンテキストにAef :: Newmanというネームスペースを自動的に含めることができますか?メソッドが含まれているためHAMLビュー・テンプレート内の次のステートメントが失敗したことをRails 3.1に名前空間を含める名前空間アプリケーションのHAMLビュー

通知は見つけることができません。この名前空間の

- include Aef::Newman 

両方のコンポーネントは、型モジュールです。例えば、私のコントローラはアプリ/コントローラ/ AEF /ニューマンに配置され、アプリケーションのコントローラは次のようになります。このようになりますHandledAddressesControllerという名前のコントローラがある

module Aef 
    module Newman 
    class ApplicationController < ActionController::Base 

     protect_from_forgery 

    end 
    end 
end 

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/handles_address.rbにあります。

私のroutes.rbをは次のようになります。

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

ビューテンプレートパスはまずアプリ/ビュー/ AEF /ニューマン/ handled_addresses/index.haml.haml

答えて

1

で、あなたが本当にいけませんテンプレートの中で定数を使うこと。いくつかのインスタンス変数を設定するか、いくつかのヘルパーを作成してください。

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

ActionViewは、このモジュールにすべてのテンプレートをコンパイル:あなたは本当にあなたができた初期化子で、あなたの名前空間定数(クラス、モジュール、など)にアクセスしたい場合は

しかし、。

+0

さらに、ビューテンプレート内で定数を使用することを悪い考え方と考える理由を説明できますか? – aef