2016-01-29 3 views
2

J'ai un modèle singulier, contrôleur, vue nommée "produit". Dans mes itinéraires, j'ai utilisé activemodel donc il n'y a pas de pluralisation.Modèle singulier, contrôleur, Form_pour référence

Routes:

resource :product, :controller => 'product' 

Quand j'utilise form_for:

<%= form_for(@product) do |f| %> 

Mais je reçois l'erreur suivante:

undefined method `products_path' 

Comment puis-je résoudre ce problème? Cela devrait être product_path.

Répondre

1

Je viens de trouver la solution. Il y a deux méthodes pour le faire.

1) Ajoutez ceci au fichier modèle. model_name.instance_variable_set(:@route_key, 'product')

OU

2) = form_for @product, :url => product_path do |f|

0

Une meilleure façon est d'utiliser le pluriel pour le nom de votre contrôleur (selon convention), et singulier pour le itinéraire:

#config/routes.rb 
resource :products, controller: "product", path: "product" #-> url.com/product/:id