我了解Asset Pipeline及其目的。但是,每个页面准备好后,文件mailers.js
中的警报将触发。
$( document ).ready(function() {
$("#search_mailer").focus();
console.log( "page is loaded!" );
});
几个问题:
我是否应该隔离document(ready)
代码,以便在加载所有网页时不会触发它?
如果我有一个带有document.ready
代码的视图,那么它会不止一次运行吗?
谢谢!
答案 0 :(得分:2)
$(document).ready();
应该是文件中的“root”函数(即没有围绕它的代码)。每次加载页面时,任何包含文件中的每个$(document).ready()
都会触发。我将代码与控制器和/或操作隔离的方法是在body
标记中添加几个类:
<body class="<%=params[:controller].gsub('/', '-')%> <%=params[:action]%>">
因此,您知道该页面属于哪个控制器和操作。使用JavaScript,您可以执行以下操作:
$(document).ready(function()
{
if($('body.user').length > 0) #Example controller name
{
#Put controller specific code here
if($('body.new, body.edit').length > 0) #Example action names
{
#Put action specific code here
}
}
});