3

我想link_to用来调用一个名为 show 的控制器动作。发生这种情况,我收到 200 条消息。现在我想div用返回的内容更新 a 。

控制器中的代码:

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

视图、链接和 JavaScript 中的代码:

<%= 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 或 JavaScript 正确返回到 JavaScript 中。如果我用括号中的一些文本替换 JavaScript 中的“数据”一词,我会得到正确的输出。但是我如何从控制器动作中得到结果呢?

4

2 回答 2

3

您快到了,但您需要告诉绑定函数您想要插入#results div 的实际html 内容。当你调用你使用.html()$('#replaced')变量时 ( data) 仍然是未定义的。

尝试以下操作:

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

编辑:哦,要记住的是,这可能会呈现您的视图,包括可能不是您想要的布局。您可以render layout: false if request.xhr?在控制器中添加类似的内容,以防止布局显示在 ajax 请求中。

于 2012-09-16T18:15:07.487 回答
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
于 2012-09-16T18:12:13.400 回答