Je rencontre des problèmes avec ma méthode de destruction sur un produit source imbriqué, lié à des commandes. Après la tentative de destruction d'un élément, je redirige les utilisateurs vers mon produit order_products_url. Je reçois l'erreur de routage suivant:Rails 3 - Ressources imbriquées - Routage
No route matches "/orders/1/products"
Ma méthode destroy ressemble à ceci:
def destroy
@product = Product.find(params[:id])
@order = Order.find(params[:order_id])
@product.destroy
respond_to do |format|
format.html { redirect_to(order_products_url) }
format.xml { head :ok }
end
end
Et routes.rb:
resources :orders do
resources :products, :controller => "products"
end
La raison pour laquelle cela me source de confusion, est Pour ma méthode de mise à jour des produits, je redirige correctement les utilisateurs vers order_products_url sans problème. Je ne comprends pas pourquoi ça marche mais pas ici.
Merci
Doux, merci pour l'aide.Après avoir corrigé cela, j'ai trouvé un problème avec ma vue, où je l'ai maintenant corrigé en utilisant une méthode delete sur mon order_product_path plutôt qu'avant où j'essayais de supprimer seulement mon @product. J'apprécie l'aide, je le fais vraiment. – Kombo
Je suis content que ça a aidé! Si vous voulez plus d'informations, j'ai ajouté un lien vers un article de blog que j'ai fait il y a quelques temps. Bonne chance! –
Notez également que vous incluez @order dans la route de redirection - order_products_url (@order) - car vous devez indiquer à Rails l'index de produit spécifique que vous souhaitez afficher (c'est-à-dire l'index des produits imbriqués dans cet ordre spécifique, pas un autre ordre). – Ethan