2014-10-13 50 views
0

我正在尝试使用AJAX调用查找并替换一些html代码。ruby​​代码被显示为文本而不是在js.erb文件中执行

我的.js.erb文件中的以下代码成功执行并显示名为'edit unit'的资源为'@units [0]'的局部视图。

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

然而,当我尝试完成同样的事情,但在定义的轨道控制的字符串,并通过它传递给我的.js.erb文件,它不能正常执行,即

在我的轨控制器:

@string = "sync partial: 'edit_unit', resource: @units[0]" 

在我.js.erb文件:

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

当我做它该W a字符串在页面上显示为文本,而不是执行和显示局部视图。

这是怎么发生的?

更新:

Eval似乎成功执行字符串。但是,当我循环多个字符串时,它似乎不起作用。

$("#edit_delivery_unit_div").replaceWith(

    <% @array.each do |string| %> 
     '<%= escape_javascript(eval(string)) %>' 
    <% end %> 

) 

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

回答

1

串不能被执行,则可以使用eval实现这一点,试试这个

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

但正如你充分访问系统

+0

没错与预防使用这就是我正在寻找!谢谢。也有轻微更新的问题,因为我不能让我的程序工作。 – user3711600

相关问题