1

컨트롤러에 대해 상속 된 리소스를 사용하고 있습니다. 그리고 지금은 모델이 있습니다레일 3의 inherited_resources가 'defaults'설정을 무시합니다.

class Sms < ActiveRecord::Base 
end 

을 그리고 난이 기본적으로 할 경우 내가 그것을 위해 컨트롤러를 원하는 :

class Admin::SmsesController < Admin::InheritedResources 
    defaults :resource_class => Sms, 
      :collection_name => 'smses', 
      :instance_name => 'sms' 
end 

을하지만 여전히 "SMSE"모델을 얻으려고 노력하는 이유는, 이해할 수 없다 :

NameError in Admin::SmsesController#index 
uninitialized constant Smse 

Pls help.

답변

2

레일즈가 Sm의 복수형이 Smses라는 것을 모르는 것이 문제입니다.

인식 할 수없는 복수에 직면
> "Sms".pluralize 
=> "Sms" 

> "Smses".singularize 
=> "Smse" 

, singularize 그냥 앱이 존재하지 않는 SMSE를 찾고 있습니다 이유 마지막 "S"를 잘라 : 당신이 레일에 가면 당신이를 볼 수 콘솔 모델.

레일스가 모델을 올바르게 복수화/단일화하도록 구성하여 많은 골칫거리를 줄일 수 있습니다. config \ initializers \ inflections.rb 파일에서이 작업을 수행하는 방법에 대한 몇 가지 예를 찾아야합니다. 당신이 원하는 것은 :

ActiveSupport::Inflector.inflections do |inflect| 
    inflect.irregular 'sms', 'smses' 
end 

은 그 때 나는 당신이 거기에서 모두 디폴트 옵션을 배치해야한다고 생각하지 않습니다 - 그것은 모든 상자 밖으로 작동합니다.