ruby代码显示为文本,而不是在js.erb文件中执行

ruby code being displayed as text rather than executing in js.erb file

本文关键字:js erb 文件 执行 显示 代码 文本 ruby      更新时间:2023-09-26

我正在尝试使用AJAX调用查找和替换一些html代码。

js.erb文件中的以下代码成功执行并显示了名为"edit unit"的部分视图,该视图具有资源"@units[0]"。

$("#edit_unit").replaceWith( "<%= escape_javascript(sync partial: 'edit_unit', resource: @units[0]) %>" );

然而,当我试图完成同样的事情,但在rails控制器中定义了一个字符串并将其传递到我的.js.erb文件时,它不能正确执行,即

在我的轨道控制器中:

@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 %>
)

这不会返回任何错误,但也不会显示局部视图。有什么想法吗?

字符串无法执行,可以使用eval来实现,试试

$("#edit_unit").replaceWith( "<%= escape_javascript(eval(@string)) %>" );

但是,当您完全访问系统

时,请谨慎使用此选项