2010-11-01 33 views
0

我有一個簡單的文本塊div標籤內替換的div內容如下:Unobtrustive JS Ruby on Rails的,的onclick與表單元素

<div id="text">Value 
<a href="/actual/link/incase/user/has/JS/turned/off" id="change_value"/> 
</div> 

我然後有此JavaScript

$('change_value').observe('click', function(event){ 
    $("text").update("something here!"); 
    event.stop(); // Prevent link from following through to its given href 
}); 

這非常棒。但是我有兩個問題(第一個是我的主要問題):

  1. 我如何獲得它,這樣,而不是更新與「的東西在這裏」的div它與表單元素,即一個表單標籤,更新它標籤,文本框和按鈕來「提交」更改。這個想法是用戶將能夠在頁面上就地編輯該字段。

  2. 我應該在哪裏放置我的JS。我目前在application.js中使用window.onLoad來運行函數...是唯一的方法嗎?我認爲是這樣,否則它會發出無法找到的元素!

謝謝大家!

回答

0

問題1:您可以對您需要的任何控制器/操作進行AJAX調用。您的控制器將獲得您要查找的對象,然後發送一個js.erb模板。 js.erb模板可以做這樣的事情:

$('#change_value').update('<%= render :partial => @object %>'); 

然後你的部分對象將包含你需要的形式。在各種Railscasts節目中,這種方法還有更多。第136集有很好的例子,但使用jQuery,所以你必須將它調整爲Prototype語法(儘管如果你還沒有嘗試jQuery,我建議給它一個鏡頭)。第235集有很多關於UJS的好東西,並展示了jQuery和Prototype的例子。

問題2:不,它不必去application.js。您可以創建另一個特定於該資源的js文件,並將其包含在該資源的佈局中。如果該資源不使用佈局,我認爲您仍然可以將其包含在您的視圖中。