簡單的JavaScript和傳遞參數我已經看過有關不顯眼的JavaScript railscasts並閱讀大量教程,而是在Rails3中不顯眼的JavaScript的兩件事情還是讓我困惑:使用與Rails3中和UJS
- 終點爲簡單的JavaScript(隱藏一些元素,添加CSS類,...)
- 參數傳遞給JS
讓我與示例代碼澄清這一點。我想讓它淡出一些元素ID爲「樣本」的鏈接:
link_to 'Fade sample', url, :remote => true
應該是什麼網址,以便它可以執行JS?它應該是在一個名爲例如「JavaScript的」,因此可以在javascript.js.erb訪問JS控制器新動作包含:
$('#sample').fadeOut();
此外,關於UJS的第二個問題與傳遞參數相關的JS(超時,對於這個例子)。我可以寫:
link_to 'Fade sample', url, :data-timeout => 1500, :remote => true
但不知道如何訪問JavaScript中的數據超時。
我使用的是Rails 3.0.5,JQuery 1.5.2和jquery-ujs。
謝謝你的回答。關於第一個答案,我可以理解url,但是我不知道當我想指定不是某個資源時,應該使用什麼url,但是javascript。它應該是一些新的行動在控制器命名爲例如'顯示'在這種情況下JavaScript文件應位於shows.js.erb? 在這個例子中,我不需要獲取一些資源,我只是想執行簡單的JavaScript代碼。 – h00s 2011-04-04 09:19:21
您可以在'routes.rb'文件'match'中取消註釋最後一行:controller(/:action(/:id(。:format)))''。之後,您可以在控制器中定義任何方法,可以在link_to中使用它。正如你所說的函數'something',你可以用散列'{:controller =>:some_controller,:action =>:something}'傳遞它。 – 2011-04-04 09:29:30
我會建議如果你有很多js在你的應用程序中處理,你必須爲它定義一個單一的函數,並將params傳遞給它。例如我會在控制器中定義一個動作js_handler。現在我給了散列'{:controller =>:my_controller,:action => js_handler,:what_to_do =>'task1'}'並且在你的方法中你可以使用這些參數來執行不同的動作。 – 2011-04-04 09:32:05