Quelle est la bonne façon de «rails» d'ajouter un lien_po une nouvelle méthode personnalisée

StackOverflow https://stackoverflow.com/questions/5049410

  •  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

Était-ce utile?

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
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top