2013-06-29 14 views
5

Credo che jQuery non funzioni su altre pagine oltre a quella appena installata. Ad esempio, quando digito localhost: 3000 /, nella directory '/' tutto jQuery funziona. Ma quando clicco su un collegamento creato da Rails comeRails Jquery non funziona su altre pagine

<%= link_to "Example Link", news_path %> 

La pagina viene caricata correttamente, ma il jQuery non funziona. I miei codici di jQuery sono come affermato:

$(function() { 
    console.log("pageloaded"); 
    .... 
    $('.up').click(function(){ 
    ..... 
    }); 
}); 
+1

fare clic con il pulsante destro del mouse sul proprio browser> inspect element> console .. postare qui il messaggio di errore. –

+0

Non c'è nessun messaggio di errore. Ma il jQuery non viene caricato. – Yagiz

+1

quale versione di Rails stai usando? In Rails 4, 'turbolinks' è attivo per impostazione predefinita e ciò significa che la nuova pagina viene caricata dinamicamente e non viene attivato $ (document) .ready. Cosa succede se si carica localhost manualmente: 3000/news –

risposta

11

In Rails 4 turbolinks è attivo per impostazione predefinita.
Ciò significa che lo $(document).ready() non viene eseguito quando si carica una nuova pagina.

turbolink un nuovo evento page:load. È possibile utilizzare questo per eseguire il codice javascript:

$(document).on('page:load', your_start_function); 

C'è un eccellente rails cast on turbolinks

+0

+1 e se si desidera disattivare i collegamenti turbo :) - http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4 – house9

+0

In realtà, c'è gem chiamato " jquery.turbolinks "che lega la pagina: carica l'evento con l'evento jquery ready – Yagiz

0

È necessario gem 'jquery-rails' nella vostra Gemfile (poi bundle install se si sta utilizzando bundler)

Una volta fatto, è necessario richiedere nel file application.js:

//= require jquery 
//= require jquery 

Infine, è necessario assicurarsi che il file application.js sia caricato come parte del modello di applicazione. In application.html.erb si dovrebbe avere la seguente:

<%= javascript_include_tag "application" %> 

Credo che questo è tutto lì per impostazione predefinita in un Rails installare quindi se avete rimosso qualsiasi di queste impostazioni è necessario aggiungere di nuovo a farlo funzionare .

+0

jquery rails gem è installato correttamente e jquery funziona correttamente nella prima pagina. – Yagiz