2015-08-23 40 views
0

我瞭解Asset Pipeline及其用途。但是,每個頁面準備就緒後,文件mailers.js中的警報都會觸發。加載完所有視圖後,滑軌會觸發火災

$(document).ready(function() { 
    $("#search_mailer").focus(); 
    console.log("page is loaded!"); 
}); 

幾個問題:

  1. 我應該隔離document(ready)代碼,以便在所有頁面加載不火?

  2. 如果我有更多的一個視圖與document.ready代碼,它運行它不止一次?

謝謝!

+0

你可以將它添加到'assets.rb'並添加'javascript_include_tag'到應使用此代碼的意見(雖然我不知道那是「Rails」方式)。 – Vasseurth

回答

2

$(document).ready();應該是文件中的「根」功能(即沒有圍繞它的代碼)。每次加載頁面時,任何包含文件中的每個$(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 
    } 
    } 
}); 
相關問題