【发布时间】:2012-01-26 18:56:53
【问题描述】:
我的 Rails 3.1 应用程序完全在命名空间内实现。当我调用视图时,不包括这个命名空间,所以我每次都必须输入每个类的完整限定名。我想这是一个错误或至少是一个缺失的功能。如何在每个视图上下文中自动包含我的命名空间 Aef::Newman,这样我就不必每次都输入完整的限定名?
请注意,HAML 视图模板中的以下语句失败,因为找不到方法 include:
- include Aef::Newman
这个命名空间的两个组件都是模块类型。例如,我的控制器位于 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 中。
我的 routes.rb 看起来像这样:
resources :handled_addresses, controller: 'aef/newman/handled_addresses, only: :index
视图模板路径为app/views/aef/newman/handled_addresses/index.haml.haml
【问题讨论】:
标签: namespaces ruby-on-rails-3.1 haml