rails 3 – link_to to destroy non funziona

Sto provando a creare un link per distruggere il controller dei miei utenti, sto anche usando Devise.

Ecco il mio codice –

vista

 "Are you sure you want to delete #{child.full_name}?", :method => :delete, :class => "user-additional", :style => "font-size:12px;font-weight:normal;" %> 

controllore

 def destroy if @user = User.find(params[:id]) @user.destroy respond_to do |format| format.html { redirect_to account_index_path } format.xml { head :ok } end end end 

Itinerari

 devise_for :users resources :users, :except => [:new] 

Il collegamento si traduce in localhost: 3000 / users / 10

Quando si fa clic su questo si apre la visualizzazione degli utenti invece di eliminarli

Qualche idea ?

Le azioni distruttive dovrebbero essere eseguite sotto forma di submission – http://www.w3.org/2001/tag/doc/whenToUseGet.html#checklist

usa invece button_to (passando a :method => :delete ) e stili il pulsante in modo appropriato.

In realtà ho appena avuto lo stesso identico problema di ieri

Prova questo:

 <%= button_to "delete", your_object, :method=>:delete, :class=>:destroy %> 

Funziona (almeno per me)

Nel caso in cui si utilizzi jQuery anziché Prototype, probabilmente manca un file javascript.

Puoi trovare i dettagli su come aggiungerlo al tuo progetto dalla pagina GitHub di jquery-ujs o dall’episodio 205 di Railscasts.

Credo che sia dovuto al fatto che in Rails 3, il javascript discreto è ora utilizzato per funzionalità come questa (Rails 2 emetterebbe un po ‘di brutto codice inline per il tuo codice, Rails 3 mette il javascript in un file esterno e usa HTML5 data- attributi per interagire con quello.)

Per risolvere questo problema devi includere <%= csrf_meta_tags %> nell’intestazione della pagina per fare riferimento al javascript esterno. Si occupa anche di problemi XSS.

Alcuni dettagli qui: Elimina link invia “Ottieni” invece di “Elimina” nella vista Rails 3

Se stai usando jQuery, assicurati di avere qualcosa di simile a questo:

  
  1. seguire i passaggi nei binari di installazione / jquery-ujs
  2. aggiungi <% = javascript_include_tag "application"%> nel tuo file di layout.

Se non hai incluso jquery e jquery-ujs nella tua app, il default link_to default che viene fornito con scaffold non funzionerà!

Ho avuto lo stesso problema.E ‘stato risolto dopo aver incluso entrambi questi js!

Inoltre, se si verifica questo problema in modalità produzione, è ansible che non siano state compilate le risorse. Vedi http://guides.rubyonrails.org/asset_pipeline.html#precompiling-assets

Ha funzionato per me con un messaggio di conferma.

 <%= button_to 'Destroy', {action: :destroy, id: version.id}, onclick: 'return confirm("Are you sure?")', method: :delete %>