2010-05-17 23 views
6

在我的佈局,我有我怎樣才能軌不會使轉義引號如 "

<% @current_user.popups.each do |p| %> 
    <% content_for :script do %> 
    <%= "$(document).ready (function() { $.jGrowl(\"#{p.message}\", { sticky: true }) });" %> 
    <% end %> 
<% end %> 

然後在腳本部分我有

<%= yield :script %> 

的問題是,這使得逃脫報價爲\&quot;和JavaScript不喜歡這個。

我該如何阻止這種情況發生?還是有另一種方法呢?我不能使用單引號,因爲我想在郵件中使用一些html。我會很感激任何幫助。

回答

11

你在使用Rails 3嗎?在Rails 3 html 轉義是默認完成,你必須繞過它每次如下:jdl有上面的正確想法,但它聽起來像你仍然有問題。

<% content_for :script do %> 
    $(document).ready (function() { $.jGrowl("<%= raw(p.message) %>", { sticky: true }) }); 
<% end %> 

但更妙的是通過運行它通過軌道提供的幫助:escape_javascript所以逃跑回車和報價

這樣的:

$(document).ready (function() { $.jGrowl("<%= raw(escape_javascript(p.message)) %>", { sticky: true }) }); 
+0

如果JDL的回答能正常工作,我還是建議使用escape_javascript輔助逃生的報價和 – 2010-05-17 23:05:17

+0

謝謝你,我需要做的這把HTML郵件中新行。 – James 2010-05-17 23:14:58

+0

我更喜歡這個答案,所以我刪除了我的。 – jdl 2010-05-17 23:39:26

1

嘗試添加.html_safe到你在視圖中的字符串。

<%= "$(document).ready (function() { $.jGrowl(\"#{p.message.html_safe}\", { sticky: true }) });" %>