頁面特定的JavaScript的正確方法我想包括這一點,例如:在一個Rails應用程序包括在Rails中
jQuery(document).ready(function($) {
$('#my-modal').modal(options)
});
在一個特定的地方。在我的情況下,該文件被稱爲views/modals/mymodal.html.erb。那裏,只有那裏。
我不知道如何做到這一點,如果我沒有把它放在所有頁面上,就像我把它放在資產中一樣。謝謝!
頁面特定的JavaScript的正確方法我想包括這一點,例如:在一個Rails應用程序包括在Rails中
jQuery(document).ready(function($) {
$('#my-modal').modal(options)
});
在一個特定的地方。在我的情況下,該文件被稱爲views/modals/mymodal.html.erb。那裏,只有那裏。
我不知道如何做到這一點,如果我沒有把它放在所有頁面上,就像我把它放在資產中一樣。謝謝!
其中一個解決方案是在插入我們的JavaScript到其自身的文件:Reference Link
例如:
//應用程序/資產/ Java腳本/ alert.js
alert("My example alert box.");
而且包括此文件僅在我們希望它執行的視圖中:
<%# app/views/page/contact.html.erb %>
<%= javascript_include_tag "alert" %>
<h1>Contact</h1>
<p>This is the contact page</p>
An d不要忘記在文件列表中選擇您的新文件進行編譯:
# config/environments/production.rb
config.assets.precompile += %w(alert.js)
由於JS文件要包括名爲my_modal.js
:
將您JS
文件放置assets/javascripts
在 assets/javascripts
的某個目錄中,例如application
。
在您的application.js
中更改行//= require_tree .
到//= require_tree application
(它可以防止在每個頁面上加載my_modal.js
)。
將您my_modal.js
在assets/javasctripts
添加my_modal.js
到config.assets.precompile
陣列(config assets.precompile += ['my_modal.js']
)在application.rb
。
將javascript_include_tag 'my_modal'
在視圖中要包含這個文件
你可以去Rails guides參考。
這些都是一些有用的技巧
your.js
your.js
上application.js
//= require_tree .
將your.js
添加到資產編譯器on config/application.rb
:config.assets.precompile += %w(your.js)
把你的JS腳本用JavaScript代碼來對mymodal.html.erb
將您的js腳本放入layout/yourlayout.html.erb
並使用if.. else..
邏輯。
例如:
<% if current_page?(yourspecific_path) %> <script language="text/javascript"> your javascript here .. </script> <% end %>
瞭解更多關於herecurrent_page?
或者使用request.fullpath
來獲取當前的完整路徑
例如:
<% if request.fullpath == yourspecific_path %> <script language="text/javascript"> your javascript here .. </script> <% end %>
更多here約request.fullpath
也可以結合使用#1和#3,如果你想腳本放入文件.js
歡呼
jquery-readyselector是一個插件「擴展$().ready()
以爲頁面特定的腳本提供方便的語法「
創建一些CSS類
<body class="<%= controller_name %> <%= action_name %>">
範圍你的JavaScript到您的網頁
$("#my-modal").ready(function() {
$('#my-modal').modal(options)
});
晚會晚了,但對於今天任何人來說,我想我已經想出了更好的東西。
有了這個,你可以編寫代碼,如:(你也可以創建一個對象,而不是一類查看文檔)
class Post {
controller() {
// Runs on every action
}
index() {
// Runs on just the index action
}
}
Punchbox.on('Posts', Post);
我已經寫這更深入這裏:https://kierancodes.com/blog/page-specific-javascript-in-rails-4
鏈接不工作... – Rubyist
謝謝,鏈接編輯。 –
+1有一些新東西... – Rubyist