Rails3:如何让js.erb将HTML插入到您的页面中

时间:2010-11-04 17:39:26

标签: ruby-on-rails-3 escaping

我有一个js.erb视图,它会替换我页面上的某些内容。我希望它插入HTML但是它插入的HTML没有正确呈现 - 你可以看到html标签。

我尝试了很多我能想象到的方法,甚至其他人推荐的方法,但都没有。例如,在我的js.erb:

var list = $("#list");
list.append("<li>first</li>");
list.append("<%= "<li>second</li>" %>");
list.append("<%= raw("<li>third</li>") %>");
list.append("<%= escape_javascript raw("<li>fourth</li>") %>");
list.append("<%= raw escape_javascript("<li>fifth</li>") %>");
list.append("<%= escape_javascript("<li>sixth</li>") %>");
list.append("<%= "<li>seventh</li>".html_safe %>");
list.append("<%= raw("<li>eigth</li>").html_safe %>");
list.append(unescape("<li>9th</li>"));
list.append(unescape("<%= raw("<li>10th</li>") %>"));
list.append(unescape(unescape("<li>11th</li>")));

这就是我附加到列表中的内容(请注意,这是直接从HTML页面复制的,不是页面的来源):

<li>first</li>&lt;li&gt;second&lt;/li&gt;<li>third</li><li>fourth</li><li>fifth</li>&lt;li&gt;sixth&lt;/li&gt;<li>seventh</li><li>eigth</li><li>9th</li><li>10th</li><li>11th</li>

如何执行此操作以便页面将其呈现为HTML?

谢谢!

注意:我正在将我的应用程序从Rails 2升级到Rails 3,这是我在升级时遇到的问题。它在Rails 2中运行得非常好,这就是为什么我认为这是一个js.erb问题而不是JavaScript问题。

2 个答案:

答案 0 :(得分:0)

所以你理解这个答案,请阅读我的问题的评论。它解释了我使用的是ajaxForm。

简而言之,我认为Rails 3给出的响应的mime类型与Rails 2不同。我怀疑这是答案,因为在谷歌搜索解决方案时,我找到了remotipart gem。这个gem帮助开发人员使Rails 3远程文件上传“微不足道”。

我注意到README状态下的指令将javascript包装在remotipart_response块中。 Looking at line 3 of remotipart.rb我看到 mime类型已更改为HTML

瞧,我实施了宝石,事情再次发挥作用。

答案 1 :(得分:0)

试试这个......

list.append("<li>third</li>");

OR,如果你渲染部分

append("<%= escape_javascript(render :partial => "show_new_pages")%>");