2010-01-11 40 views
2

這裏是鑑於FeesController 「秀」 動作模板代碼:RJS返回而不JS標籤普通的JavaScript

<div id="payers_controls"> 
     <%= link_to_remote('New payer', 
           :update => "payers_controls", 
           :url => new_payer_url) 
     %> 
</div> 

這裏是new.rjs - 屬於PayersController 「新」 行動

page.replace_html "payers_controls", :partial => "form", :object => @payer 

這裏是PayersController中的「新」動作

def new 
    @payer = Payer.new(params[:payer]) 
    end 

以下是PayersController中「新」操作的「表單」部分

<%= "Damn text to see if this damn partial is rendered properly" %> 

然後我點擊「新建付款」鏈接,它使我的內心「payers_controls」 DIV純JS:

try { Element.update("payers_controls", "Damn text to see if this damn partial is rendered properly"); } catch (e) { alert('RJS error:\n\n' + e.toString()); alert('Element.update(\"payers_controls\", \"Damn text to see if this damn partial is rendered properly\");'); throw e } 

而且到底爲什麼這個該死的響應不括在SCRIPT標籤? 我是否需要在頁面中爲JS響應創建另一個帶有SCRIPT標籤的隱藏佔位符?

P.S.請理解我的憤怒,因爲我是Rails的AJAX新手,我想成爲一名程序員,而且,我希望我的代碼看起來很乾淨整潔。

回答

3

問題是,你試圖用JS更新兩次內容。

我會從您的link_to_remote標記中刪除:update參數,或者刪除RJS模板。

基本上Rails使用RJS Template更新頁面,然後使用來自link_to_remote的update更新再次更新它。你不需要兩個。由於在視圖中儘可能保留儘可能少的代碼,我會將其刪除並保留RJS模板。

希望這會有所幫助。別的,只是讓我知道。

肯特

+0

這是精明的。非常感謝。似乎我需要睡一會兒。 P.S. Stackoverflow對於這樣的快速回答有點讓人上癮:D – BlackTea 2010-01-11 02:33:59

+0

哈哈。沒問題!我知道這是令人沮喪的關於JS和Rails ......魔鬼的細節。祝你的Rails項目好運。 – ewakened 2010-01-11 13:01:07