Jam*_*mes 6 javascript ruby-on-rails actionview
在我的布局中我有
<% @current_user.popups.each do |p| %>
<% content_for :script do %>
<%= "$(document).ready ( function() { $.jGrowl(\"#{p.message}\", { sticky: true }) });" %>
<% end %>
<% end %>
Run Code Online (Sandbox Code Playgroud)
然后在我的脚本部分
<%= yield :script %>
Run Code Online (Sandbox Code Playgroud)
问题是,这会呈现转义的报价,\"而javascript不喜欢这样.
我怎么能阻止这种情况发生?或者还有另一种方法吗?我不能使用单引号,因为我想在消息中有一些html.我很感激任何帮助.
Dan*_*ley 11
你在使用Rails 3吗?在Rails 3中,默认情况下,html 转义是完成的,你必须每次都绕过它,如下所示:jdl上面有正确的想法,但听起来你仍然有问题.
<% content_for :script do %>
$(document).ready ( function() { $.jGrowl("<%= raw(p.message) %>", { sticky: true }) });
<% end %>
Run Code Online (Sandbox Code Playgroud)
但更好的方法是通过rails提供的帮助程序来运行它:escape_javascript所以转义回车和引号
像这样:
$(document).ready ( function() { $.jGrowl("<%= raw(escape_javascript(p.message)) %>", { sticky: true }) });
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3940 次 |
| 最近记录: |