2016-06-30 12 views
1

nachladen Arbeiten in Rails 4.2.5, ich habe den folgenden Code in meiner application.js Datei:Rails 4 arbeitet jquery Funktion, nicht auf

$(document).ready(function() { 
$("#property_selection #properties").click(function() { 
    var url = window.location.href 
      .replace(/\/?$|(\?|&)current_prop_id=[^?&]+/g, "") 
     + "?current_prop_id=" 
      + $("#properties option:selected").val(); 
    window.location.href = url; 
    }) 
}); 

Das heißt, wenn ich einen property_id wählen, möchte ich gehen an die gleiche URL, plus "?current\_prop\_id=", plus die ID.

Das funktioniert das erste Mal, wenn ich mich anmelde. Wenn ich einen Pfad wie http://localhost:3000/foo besuche, tut es dies jedoch nicht. Schlagen Aktualisierung auf die Seite macht es wieder funktioniert.

Dann änderte ich die $(document).ready Linie $(document).on('page:load', ... (bezogen auf das, was ich here gelesen hatte), sondern dass umgekehrt das Problem nur. Jetzt funktioniert es das erste Mal, aber nicht die zweite.

Das Löschen dieses Codes in eine statische Datei funktioniert problemlos.

Ich habe jetzt beide in application.js definiert, die auf vielen Ebenen falsch anfühlt, aber ich weiß nicht, was die Funktion zu erhalten tun sonst in beiden Fällen zu arbeiten. Hat jemand irgendwelche Vorschläge? Vielen Dank.

Antwort

1

Normalerweise mache ich so etwas wie (Kaffee Skript-Syntax):

$ -> 
    do_on_load() 
    $(window).bind('page:change', do_on_load) 

oder javascript:

$(document).ready(function() { 
    do_on_load(); 
    $(window).bind('page:change', do_on_load); 
} 

wo do_on_load() ist die Funktion mit den Anweisungen, die ausgeführt werden soll. Wie auch immer, das ist verursacht durch Turbolinks + Jquery und es ist wirklich nervig. Ändern Sie die Reihenfolge, in der sie in Ihre Anwendung geladen werden. Js beeinflussen auch dieses Verhalten. Ich schlage vor, Turbolinks zu überdenken ... es wird Ihnen Kopfschmerzen bereiten. Viel Glück!

+0

Danke. Ich überlegte Turbolinks, oder besser gesagt, überlegte ich es zum ersten Mal und entfernte alle Verweise darauf in meinem Code. Ich kann mich nicht daran erinnern, in irgendeiner meiner Dateien irgendeinen Hinweis darauf zu geben, also muss ein Generator es getan haben. – amp108

2

hatte ich das gleiche Problem, wenn ich mit jquery Funktion zuvor hatte meine Bilder zu laden. Der Grund dafür, wie Turbolinks Seiten lädt. Einige Knoten, die Sie mit Ihrer Seite verbinden, existieren nicht mehr.

Ich benutzte gem 'jquery-turbolinks' meine Probleme zu lösen. Überprüfen Sie das Juwel here probieren Sie es aus, wenn es Ihr Problem löst. viel Glück, Junge.

+0

Danke für die Turbolinkspitze. Ich habe mich jedoch dafür entschieden, es aus meiner Konfiguration zu entfernen, da das Juwel 'jquery-turbolinks' anscheinend nicht half. Ich bin nicht einmal sicher, wo die Referenzen für sie herkommen, außer ein Generator hat sie automatisch erstellt. Danke noch einmal. – amp108

Verwandte Themen