2012-09-16 19 views
3

我想用link_to来调用名为show的控制器动作。发生这种情况,我收到了200条消息。现在我想用正在返回的内容更新div。Rails:AJAX调用后显示数据,如何在控制器中渲染?

守则控制器:

respond_to do |format| 
    format.html # show.html.erb 
    format.js 
end 

典看来,链接和JS:

<%= link_to "Show analysis", company_comparison_path(3), :remote => true , :id => "thelink" %> 

<div id="replaced"> will be replaced </div> 

<script> 
$('#thelink').bind('ajax:complete', function() { 
     $('#replaced').html(data) 
}); 
</script> 

我想我还是不明白如何正确地返回来自控制器的HTML或JS成JS。如果我用括号中的一些文本替换JS中的“数据”一词,我会得到正确的输出。但是,我如何从控制器操作中获得结果?

回答

3

你几乎没有,但你需要告诉绑定功能有什么实际的html内容是要插入到您的#results股利。当您拨打.html()$('#replaced')时,您使用的变量(data)仍未定义。

尝试以下操作:

$('#thelink').bind('ajax:complete', function(event, data) { 
    $('#replaced').html(data.responseText); 
}); 

编辑:哦,有事要记住的是,这可能导致你的看法,包括这可能不是你想要的布局。您可以在控制器中添加诸如render layout: false if request.xhr?之类的内容,以防止布局显示在ajax请求上。

+0

这很好,解决了我现在用了3个小时的问题。只是想知道“功能(事件,数据)”部分,我想我在其他地方看到了这个。我需要将事件称为某事,但我不知道它会发生什么。这个订单是否固定?如果我忘记它会失败吗?现在很高兴这个作品。 –

1

如果您想从AJAX响应返回更丰富的内容,您可以使用render_to_string方法渲染来自控制器的视图。

查看更多:http://apidock.com/rails/ActionController/Base/render_to_string

respond_to do |format| 
    format.html # show.html.erb 
    format.js { 
    @content = render_to_string(:partial => 'some_partial_view') 
    } 
end 
+0

感谢您的回答,这很有用。但是我的问题是在彼得解决的javascript方面缺乏理解。还是很好的知道。 –

相关问题