Pregunta

Estoy usando recursos heredados para mis controladores. Y ahora tengo modelo:

class Sms < ActiveRecord::Base
end

Y quiero el controlador para ello, donde hago valores predeterminados:

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

Pero no puedo entender por qué todavía está tratando de obtener el modelo "SMSE":

NameError in Admin::SmsesController#index
uninitialized constant Smse

Por favor ayuda.

¿Fue útil?

Solución

El problema es que Rails no sabe que el plural de los SMS es SMSS. Si vas a la consola de Rails, deberías ver eso:

> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

Cuando se enfrenta a un plural que no reconoce, Singularize simplemente trunca la "S" final, por lo que su aplicación está buscando un modelo SMSE inexistente.

Se ahorrará muchos dolores de cabeza configurando rieles para pluralizar/singularizar sus modelos correctamente. En el archivo config inicializadores inflexss.rb debe encontrar algunos ejemplos de cómo hacer esto. Lo que quieres es:

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

Entonces no creo que deba necesitar poner la opción predeterminada allí en absoluto; todo debería funcionar fuera de la caja.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top