Quelle est la bonne façon de «rails» d'ajouter un lien_po une nouvelle méthode personnalisée
-
15-11-2019 - |
Question
Nous ajoutons une nouvelle méthode «Delete_Stuff» au Contrôleur Widgets d'une application échafaudée.
Dans les routes, nous avons ajouté Match 'widget / delete_stuff /: id' => 'widgets # delete_stuff'
Je peux créer manuellement des liens html (get) comme
<a href="/widget/delete_stuff/<% widget.id %>">My Custom Delete Stuff</a>
Mais c'est mauvais à tant de niveaux (les utilisations se font au lieu de supprimer, ne permet pas de confirmer une boîte de dialogue, n'est pas sèche, etc.)
Le problème est que je ne peux pas comprendre comment utiliser les aides URL pour une méthode personnalisée ... essayant de faire quelque chose comme ceci:
<% link_to 'DeleteStuff', @widget, :confirm => 'Are you sure?', :method => :delete %>
Mais cela est simplement ignoré lorsque le HTML est rendu.
Il me manque clairement quelque chose de fondamental sur la façon d'utiliser link_to, toute aide sera appréciée!
Cheers, JP
La solution
Première exécution rake routes
pour savoir quelles aides URL sont à votre disposition. Vous pouvez voir une ligne commençant par:
delete_stuff_widget
Vous pouvez ensuite ajouter path
ou url
Pour obtenir le nom, vous devez utiliser dans vos vues et contrôleurs. Je soupçonne que votre nouveau lien_to ressemblera à:
link_to "DeleteStuff", delete_stuff_widget_path(@widget), :confirm => "Sure?", :method => :delete
Autres conseils
On dirait que vous manquez un signe égal au début. Il devrait lire:
<%= link_to 'DeleteStuff', @widget, :confirm => 'Are you sure?', :method => :delete %>
Pour résoudre votre routage et faire de votre action supplémentaire une méthode de suppression, essayez ceci;
dans routes.rb
resources :widgets do
member do
delete 'delete_stuff'
end
end