用jQuery和escape_javascript替换html时,部分不会呈现

时间:2011-10-17 15:30:55

标签: ruby-on-rails-3

当用户点击具有“edit_resource”类的链接时,div的内容应替换为partial。这是我的代码:

$(".edit_resource").click(function(){
  var id = $(this).attr("id")
  $('#id' + id + '_show').html("<%= escape_javascript(render :partial => 'form', :locals => {:@resource => resource})%>")
})

代码按预期工作,但escape_javascript不起作用。 div的新内容是文本

  

&lt;%= escape_javascript(render:partial =&gt;'form',:locals =&gt; {:@resource =&gt; resource})%&gt;

,这也是页面上显示的内容。

没有代码被执行,我的部分没有被渲染。我曾尝试使用&lt;%==而不是&lt;%=没有运气。

我也试过

  

&lt;%= raw escape_javascript(render:partial =&gt;'form',:locals =&gt; {:@resource =&gt; resource})%&gt;

我甚至试图用简单的rails代码替换代码的部分部分。这也没有帮助。

我该怎么办?

我使用Rails 3.0.10,而我的javascript_include_tag是这样的:

  

&lt;%= javascript_include_tag'jquery-1.6.2.min','jquery-ui-1.8.16.custom.min','application','jquery.rails.js'%&gt;

3 个答案:

答案 0 :(得分:3)

在escape_javascript

的结束括号后添加.html_safe

答案 1 :(得分:1)

我已将我的js放在js.erb文件中,最后设法以正确的方式使用我的变量。

这是我的代码:

$('#id' + '<%= @id %>' + '_show').html('<%= escape_javascript(raw render :partial => 'form', :locals => {:@resource => Resource.find_by_id(@id)}).html_safe %>')

在控制器中: format.js {@id = params [:id]}

在视图中:&lt;%= link_to t('edit'),resources_path(:id =&gt; resource.id),:remote =&gt; true%&gt;

答案 2 :(得分:0)

我认为你不能:@resource @后跟一个符号:

<%= escape_javascript(render :partial => 'form', :locals => {:@resource => resource})%>

只需拿出@ out

<%= escape_javascript(render :partial => 'form', :locals => {:resource => resource})%>

并通过调用使用该变量 部分

中的resource