当用户点击具有“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;
答案 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