2010-12-23 34 views
0

我有一個RHTML部分「mypartial」,其中包含一個js塊是這樣的:用JS更換部分在它

<script type="text/javascript">new Ajax.Updater([...]);</script> 

在RJS模板,我叫

page.replace "container", :partial => "mypartial" 

更換工程很好,除了腳本塊。這個塊,它的JavaScript不會被寫入HTML(我用firefox/web開發工具欄 - >顯示生成的源代碼)進行檢查。

我真的必須通過頁面< <「myjs()」在我的rjs模板中編寫js部分嗎?

回答

0

這是我自己的錯,但我會寫在這裏爲任何人可能遇到同樣的問題。

js代碼將被評估,但是:它不適用於document.observe('dom:loaded'),因爲當您完成加載頁面時將觸發此事件,而不是在您更新部分。 facepalming自己

1

我發現奇怪的是,您的page.replace會忽略腳本標記......如果您使用javascript_tag幫助程序,該怎麼辦?它也忽略了嗎?

另一個選擇是在從您的佈局加載的JavaScript文件之一中擁有該JavaScript。那麼你不必擔心刪除和替換它。當然,除非你插入Ruby變量。

如果您在您的JavaScript中使用Ruby變量,那麼也許不是RJS,您的AJAX調用應該呈現一個js.erb模板,該模板會拋出JavaScript並呈現該部分。

+0

不幸的是我不用擔心刪除/動態添加它,這就是爲什麼我希望這個作品與替換;) – pduersteler 2010-12-24 10:23:23

+0

哦,和javascript_tag幫助不幸的是沒有幫助你的動態場景 – pduersteler 2010-12-24 10:36:21

1

部分將會被渲染並且腳本塊完好無損,但是,如果我沒有記錯的話,Prototype會在將HTML插入到DOM中之前將它們刪除,以便稍後爲eval。這就是爲什麼它不會出現在DOM檢查器中。您可以通過在生成的腳本中包含alert("HELLO FROM RJS")來測試它 - 它應該顯示警報。