2013-10-16 8 views
6

Come mai l'azione destroy è incompatibile quando jquery è richiesto nel file application.js? Come fai a far funzionare nuovamente l'azione destroy senza trascurare jquery?rails 4, link_to non funziona con destroy action quando jquery, jquery_ujs è richiesto

messaggi vista indice:

h1 Blog 
- @posts.each do |post| 
h2 = link_to post.title, post 
p = post.content 
p = link_to 'Edit', edit_post_path(post) 
p = link_to 'Delete', post, data: {confirm: "Are you sure?"}, method: :delete 
br 

p = link_to 'Add a new post', new_post_path 

distruggere azione nel controller di messaggi:

def destroy 
@post = Post.find params[:id] 
@post.destroy 

redirect_to posts_path, :notice => "Your post has been deleted" 
end 

application.js:

= require jquery 
= require jquery_ujs 
//= require turbolinks 
//= require_tree 

Non appena ho commentare quei due l'azione distruggere funziona di nuovo. Senza il commento, il link di eliminazione attiva l'azione dello show ... i tuoi pensieri?

+0

ha trovato una soluzione [qui] (http://stackoverflow.com/questions/8726534/rails-3-1-link-to-not-show-confirmation-or-destroying-properly) utilizzando piuttosto il metodo button_to di link_to. button_to ti consente di creare un modulo usando put, post ed elimina senza abilitare javascript. –

+0

Puoi anche usare 'data-method = delete' invece di andare per pulsante (perché potrebbe richiedere un ulteriore stile per soddisfare le tue esigenze) –

risposta

3

Quindi la pipeline di asset fa qualcosa di speciale con quei commenti. La presenza di un commento della forma

//= require jquery 

indica al preprocessore di includere tale file quando si costruisce le application.js come servito ai clienti dell'applicazione. Quando rimuovi il commento, rimuovi questo comportamento e le librerie risultanti non vengono compilate nell'applicazione application.js finale pubblicata dall'app.

Il risultato è che si interpreta erroneamente come funziona la direttiva richiesta. Funziona SOLO all'interno di un commento. Quando rimuovi il tag del commento, smetti di includere la libreria.

0

Se si è copiato e incollato il codice dal sito Web http://guides.rubyonrails.org/getting_started.html, provare a digitare invece.

Oppure eliminare tutti gli "spazi bianchi" iniziali che potrebbero non essere spazi vuoti. In qualche modo ho ottenuto ASCII 160 invece ASCII 32 (il carattere dello spazio bianco).

Sono sicuro di come sia successo ma copiarlo e incollarlo di nuovo sta funzionando bene ora.

Problemi correlati