Rails

2016-03-21 15 views
2

içinde application.js & pipeline dışında javascript dosyasını yükle Rails uygulamasında sayfa1, page2 ve page3 var.Rails

Sayfa2 için jQuery .click olaylarına sahip özel bir javascript dosyası var.

Dosyayı application.js uygulamasına eklerim //= require specialfile Özel dosya benim app/assets/javascripts/specialfile.js yolunda.

Sayfa1 veya sayfa3'ten page2'ye gidersem sayfayı yenilemediğim sürece özel js dosyası çalışmaz. Yalnızca herhangi bir önceki hareket olmaksızın doğrudan sayfa 2'ye gidersem çalışır.

Kendi uygulama.js hattımdaki specialfile.js'ye gereksinim duymaya çalışmam ve doğrudan sayfa 2'ye şu adrese eklemem: <%= javascript_include_tag "specialfile" %>. Işe yaramadı. Ayrıca varlıklar/javascript/specialfile.js ... app/assets/javascript/specialfile gibi tam yol eklemeye çalıştım ama şans yok.

Bunu nasıl yapabilirim?

<%= javascript_include_tag params[:controller] if AppName::Application.assets.find_asset("#{params[:controller]}.js") %> gibi bir şey buldum ama iyi anlamıyorum. Özel dosyaya nasıl işaret edebilirim?

+0

:

Daha fazla bilgi için turbolinks README, especially this bit on Events okumalı, ancak genellikle bu çevresine hızlı yolu $(... veya $(document).ready blokta Varlığınız kodu yerine size koymak gerekir Sayfa2, sayfa kaynağını görüntülediğinde, 'specialfile.js' dosyasını görüyor musunuz? –

+0

Ne demek istiyorsun? Uygulamamda varsa, her yerde çalışır, ancak bununla ilgili bir sorun var: https://forum.jquery.com/topic/script-not-running-unless-i-refresh-page ... Eğer javascript_include_tag "specialfile.js" ile işaret etmeye çalışırsam, konsolda bulunamadı 404 gösterecektir. – Dudis

+0

Yüklüyse ancak çalışmadıysa, lütfen turbolinks'i düşünün. –

cevap

1

Varsayılan olarak, Raylar, sayfanın tam yüklemesini yapmadan bir bağlantıya tıkladığınızda sayfanın yalnızca body sayfasını yükleyen turbolinks gem içerir. Artık sayfanın tam olarak yüklenmediğinden, document'daki "hazır" etkinlik tetiklenmiyor. Page1 & yılında

$(document).on("ready page:load", ... 
+1

Harika, teşekkürler, teşekkürler! – Dudis

+0

Rica ederim. – smathy