0

Equipment::Feature管理部分に名前空間モデルと名前空間コントローラーがありますAdmin::Equipment::FeaturesController。モデルは汎用的で、:admin 名前空間内およびパブリック Web サイト用として使用されます。:admin:equipment名前空間のルーティングを設定しました

namespace :admin do
  namespace :equipment do
    resources :features
  end
end

これにより、次のルートが得られます。

 admin_equipment_features     GET /admin/equipment/features(.:format)          admin/equipment/features#index
                              POST /admin/equipment/features(.:format)         admin/equipment/features#create
 new_admin_equipment_feature  GET /admin/equipment/features/new(.:format)      admin/equipment/features#new
 edit_admin_equipment_feature GET /admin/equipment/features/:id/edit(.:format) admin/equipment/features#edit
 admin_equipment_feature      GET /admin/equipment/features/:id(.:format)      admin/equipment/features#show
                              PUT /admin/equipment/features/:id(.:format)      admin/equipment/features#update
                              DELETE /admin/equipment/features/:id(.:format)   admin/equipment/features#destroy

かなり標準的なもの。しかし、アドレスすると例外/admin/equipment/featuresがスローされますuninitialized constant Admin::Equipment::FeaturesController::Equipment

#indexAdmin::Equipment::FeaturesController私のルックスのアクション

def index
  @features = Equipment::Feature.all
end

Admin::Equipment名前空間を宣言するまで、うまくいったようです。みたいな前はAdmin::EquipmentFeaturesController

これはある種の名前空間の衝突だと思いますが、わかりません。どこから来たのでしょうか?

前もって感謝します!

UPDATE Featureモデル(STIパターン使用)

class Equipment::Feature < ActiveRecord::Base

  attr_accessible :category_id, :name_en, :name_ru, :type

  belongs_to :category, :class_name => 'Equipment::Category'

  has_many :item_features, :class_name => 'Equipment::ItemFeature'
  has_many :items, :through => :item_features

  translates :name
end

class FeatureBoolean < Equipment::Feature

end

class FeatureNumeric < Equipment::Feature

end

class FeatureString < Equipment::Feature

end

class FeatureRange < Equipment::Feature

end

UPDATE2#index以下の回答による 修正アクションにより、問題が解決しました。新しいコード:

def index
  @features = ::Equipment::Feature.all
end
4

2 に答える 2

2

FeatureinAdmin::Equipmentではなくinを探していると思います::Equipment

名前空間がないことを指定してみてください。

def index
  @features = ::Equipment::Feature.all
end
于 2012-06-16T15:39:16.350 に答える
1

このようなフォルダーを作成してください app/controllers/admin/equipment/features.rb

次に、コントローラー名を Admin::Equipment::FeaturesController に編集します。

class Admin::Equipment::FeaturesController < ActiveRecord::Base

end
于 2012-06-16T15:51:30.930 に答える