我正在尝试使用AJAX调用查找并替换一些HTML代码。
我的.js.erb文件中的以下代码成功执行并显示名为“edit unit”的部分视图,其中包含资源“@units [0]”。
$("#edit_unit").replaceWith( "<%= escape_javascript(sync partial: 'edit_unit', resource: @units[0]) %>" );
但是,当我尝试完成同样的事情,但在rails控制器中定义一个字符串并将其传递给我的.js.erb文件时,它没有正确执行,即
在我的rails控制器中:
@string = "sync partial: 'edit_unit', resource: @units[0]"
在我的.js.erb文件中:
$("#edit_unit").replaceWith( "<%= escape_javascript(@string) %>" );
当我这样做时,字符串在页面上显示为文本,而不是执行和显示局部视图。
为什么会这样?
更新
Eval似乎成功执行了字符串。但是,当我循环遍历多个字符串时,它似乎不起作用。
$("#edit_delivery_unit_div").replaceWith(
<% @array.each do |string| %>
'<%= escape_javascript(eval(string)) %>'
<% end %>
)
这不会返回任何错误,但也不会显示部分视图。有什么想法吗?
答案 0 :(得分:1)
无法执行字符串,您可以使用eval
来实现此目的,试试这个
$("#edit_unit").replaceWith( "<%= escape_javascript(eval(@string)) %>" );
但是,在您提供对系统的完全访问权限时,请谨慎使用此功能