Rails escape_javascript和remotipart

时间:2014-04-25 14:57:33

标签: jquery ruby-on-rails ruby remotipart

当用jquery和rails替换html(在4.0.4上测试)时,以下工作:

replace.js.erb的内容

$('#my_div').html("<%= j(render 'my_partial') %>");

_my_partial.html.erb的内容

"This" works
<%= '"This" also works' %>

但是,如果使用remotipart gem(1.2.1)将replace.js.erb呈现给ajax文件提交,则会失败,如下所示。

create.html.erb的内容

<%= form_for @my_model, :html => {:remote => true} do |f| %>
  <%= f.file_field :some_file %>
  <%= f.submit %>
<% end %>

它会在浏览器中导致以下javascript错误,因为引号未正确转义。

SyntaxError:意外的标识符

服务器响应:$('#my_div')。html(“\”这个\“工作\ n”这个“失败\ n”);

请注意,如果我在未选择文件的情况下提交,则不会发生javascript错误,并且会重新正确呈现。看起来未选择文件时不会调用remotipart,可能是因为不需要多部分表单。

1 个答案:

答案 0 :(得分:1)

我终于解决了尝试类似问题的同样问题:

$("#my_div").html("<%= escape_javascript(render :partial => 'my_partial').gsub('&quot;', "'") %>");