Rails de réglage de paramètres par défaut de 3 inherited_resources Ignore
-
28-10-2019 - |
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.
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