2012-06-16 1 views
0

내가 모델 Equipment::Feature을 네임 스페이스 내 관리 부분 Admin::Equipment::FeaturesController에서 컨트롤러를 네임 스페이스했다. 모델은 일반적이며 :admin 네임 스페이스 및 공개 웹 사이트에서 사용됩니다.레일 3 네임 스페이스가 모델과 컨트롤러 라우팅 문제

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 네임 스페이스

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

에 대한 라우팅을 설정했습니다. 내가 /admin/equipment/features를 해결하지만 그것이 내가 Admin::Equipment 네임 스페이스를 선언 할 때까지이 일을하는 것 않았다

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

처럼 Admin::Equipment::FeaturesController 보이는 내에서 uninitialized constant Admin::Equipment::FeaturesController::Equipment 예외

#index 조치를 던졌습니다. 이

Admin::EquipmentFeaturesController 같았다 전에 나는이 네임 스페이스 충돌의 일종 것 같다,하지만 난 그것을 얻을하지 않습니다 - 그것은 어디에서 오는가?

미리 감사드립니다.

UPDATEFeature 모델은 문제가 해결 아래에 답변을 당 #index 조치를 고정

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 (STI 패턴을 사용). 새로운 코드 :

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

기능 모델의 코드를 표시하십시오. –

+0

질문이 업데이트되었습니다. 'Feature' 모델은 STI 패턴을 사용하고 레일 컨벤션 – paulus

답변

2

나는 지금 오히려보다, Admin::EquipmentFeature을 찾고 생각 ::Equipment

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

오 감사에 따라'STI 클래스 명 type' 열이 있습니다! 그것은 효과가있다! 네임 스페이스의 접두사에'::'종류의 '리셋'네임 스페이스 해석이 있다는 것을 몰랐습니다. – paulus

1

이 응용 프로그램과 같은 폴더를 만드십시오, 네임 스페이스가 없음을 지정하십시오 /controllers/admin/equipment/features.rb

그리고는 관리자 :: 장비 :: 묘기에 컨트롤러 이름을 편집 uresController

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

end 
+0

지금과 비슷합니다. – paulus