2013-01-08 72 views
0

我有rails 3.2.1和測試JQuery UI,我想顯示一個DatePicker。因此,在「new.hmtl.erb」頁面上我已經把下面的標籤:Rails:如何使用JQueryUI

<p>Date: <input type="text" id="datepicker" /></p> 

在project.js.coffee(以下簡稱「新」視圖頁面由項目控制器渲染)我」已寫:

$("#datepicker").datepicker(); 

爲什麼DatePicker doensn't不出現?

在新頁面的源代碼我:

<script src="/assets/projects.js?body=1" type="text/javascript"></script> 

包含:

(function() { 
    $("#datepicker").datepicker(); 
}).call(this); 

我必須包括一些寶石?在我的application.js有:

//= require jquery 
//= require jquery_ujs 
//= require_tree . 

感謝

回答

1

部分,將初始化UI對象轉到頁在你的情況下new.html.erb代碼。您將其添加到底部爲:

<script> 
    $(document).ready(function() { 
    $("#datepicker").datepicker(); 
    }); 
</script> 

這意味着當頁面加載時它將初始化您的輸入對象。如果您需要這部分代碼在多個頁面中可用,請在application.html.erb佈局中添加此代碼。有關佈局的更多信息,請參閱Rails指南頁面。

編輯

對於這裏的教育目的是補充意見: 如果你想要把代碼application.js你可以做到以下幾點:

function setDatePicker() { 
    $("#datepicker").datepicker(); 
} 

,然後做

<script> 
    $(document).ready(function() { 
    setDatePicker(); 
    }); 
</script> 

如果你想要在application.js加載時執行的代碼,你只需要放入它沒有包裝它的功能(不建議)。它會在加載application.js時執行,但它不起作用,因爲它可以在加載DOM之前觸發(也可能會)。所以總是使用jquery的.ready

+0

Thx ...如果我把這個代碼放在new.html.erb裏面。但是,我可以把它放在application.js中嗎? – Tom

+0

把它保存在application.js中是沒有意義的。如果你創建頁面「show.html.erb」,那麼你不會在頁面上有datapicker輸入,它會中斷。你可以做的是在'application.js'中創建函數'setDatePicker()',並從'.ready'中調用它。根據我的經驗,如果此代碼是特定於此頁面的規則(這是因爲您正在引用此頁面上的HTML元素的ID),而不應該進入「application.js」。 –

+0

我同意你的看法......但它只是爲了學習如何工作....爲什麼如果我把腳本代碼放在application.js中不起作用?我不能把它放在那裏? – Tom