2009-07-01 43 views
3

我使用jQuery與導軌和具有下面的代碼段jQuery的HTML()和換行字符

$('#related').html("<%= render :partial => "related_items" %>"); 

我在在瀏覽器中的一個問題,其中#related元素的含量是隻有在部分中沒有換行符時才被替換。

這並不是什麼大不了的事情,我可以將所有內容放在一行上,但它使代碼非常難以閱讀。

有沒有辦法避免jQuery html()屬性中的換行符?

回答

3

這裏發生的事情是<%%>之間的代碼首先被Rails解釋,並且該解釋的輸出被髮送到瀏覽器。所以發送給瀏覽器的是:

$('#related').html("Some text with a 
line break in it"); 

這是無效的javascript,因爲javascript不允許多行雙引號字符串。您需要跳過字符串中的換行符,以便在打印到瀏覽器時結果是有效的JavaScript語句。

+0

沒有意識到這是無效的JavaScript。這就說得通了。我會在紅寶石方面逃避它。 – KJF 2009-07-01 21:14:49

0

...等等,是不是應該在JavaScript甚至跑之前處理代碼?或者你是否想出於教育目的而以純文本形式打印代碼?

+0

對不起,我應該解釋一下。這是一個js.erb文件,所以ruby方在發送到瀏覽器之前被執行。 – KJF 2009-07-01 21:13:45

2

只是爲了完整性,這是我所做的工作。

$('#related').html("<%= escape_javascript(render :partial => "related_items") %>");