Question

J'utilise des ressources pour mes contrôleurs Héritée. Et j'ai maintenant le modèle:

class Sms < ActiveRecord::Base
end

Et je veux contrôleur pour cela, où je fais par défaut:

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

mais je ne peux pas comprendre, pourquoi il essaie toujours d'obtenir le modèle « SMSE »:

NameError in Admin::SmsesController#index
uninitialized constant Smse

Pls aide.

Était-ce utile?

La solution

Le problème est que Rails ne sait pas que le pluriel de Sms est SMSes. Si vous allez à la console Rails vous devriez voir que:

> "Sms".pluralize
 => "Sms"

> "Smses".singularize
 => "Smse"

Face à un pluriel, il ne reconnaît pas, singularisent tronque simplement le « s » final, qui est la raison pour laquelle votre application est à la recherche d'un modèle SMSE inexistant.

Vous vous épargnerez beaucoup de maux de tête en configurant Rails à pluralize / singularisent vos modèles correctement. Dans le fichier config \ initializers \ inflections.rb vous devriez trouver quelques exemples de la façon de le faire. Qu'est-ce que vous voulez est:

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

Alors je ne pense pas que vous avez besoin de mettre l'option par défaut là-dedans du tout -. Il devrait fonctionner tout de la boîte

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top