2010-11-02 143 views
1

这里是我的代码Rails的escape_javascript没有渲染的东西

$(function(){ 
$('#new_post').bind('ajax:success', function() { 
    $('.posts').append("<%=escape_javascript(render :partial=>'post', :loca\ 
ls=>{:post=>Post.new})%>"); 
    }); 
}); 

导致一个奇怪的输出,页面简单地追加<%=escape_javascript(render :partial=>'post', :locals=>{:post=>Post.new})%>到我的清单。

有谁知道这是怎么发生的呢? 谢谢!

回答

1

如果这是一个局部或视图,请确保它被命名为扩展名为.js.erb或者您可能无法获得正确的ERB插发生。

+0

你的意思是'post'(post.js.erb)?我把上面的代码放在application.js中,它适用于我的'删除',所以我认为同样的方法应该适用于'创建'。 – JayX 2010-11-02 16:46:36

+0

如果您的JavaScript中有ERB,那么您不能将它放在'public/application.js'中,因为它直接发送到浏览器而没有插值。您需要的是创建一个路径,以便返回适当的插补脚本。 – tadman 2010-11-02 17:34:35

2

我解决了这个问题,最终,谢谢!

其实我使用的方法第一,但没有奏效。

因此,原来我在控制器,这可能会阻止Javascript渲染任何使用

format.js { render :nothing => true } 

此外,而是采用

<%= div_for post do %> 

我用

<tr><td> 

格式 为我的单篇文章 ,我想这就是原因的一部分为什么我的javascript不工作

现在我create.js.erb只呈现

$('#posts').append("<%= escape_javascript(render(@post)) %>"); 

和它的作品。

谢谢你们,我是这个社区的新手(也是rails/javascript),但我已经学到了很多东西。