在轨道中渲染json与js

时间:2012-03-15 20:20:57

标签: ruby-on-rails

如果我渲染js而不是渲染json,我会得到不同的结果。想弄清楚为什么这不能按预期工作

我的javascript看起来像这样:

$( function () {
    $('.delete_post').bind('ajax:success', function () {
            $(this).closest('tr').fadeOut();
        }
    )
});

控制器:

作品

respond_to do |format|
  format.js { render :nothing => true}
end

作品

respond_to do |format|
  format.js { head :ok }
end

作品

respond_to do |format|
  format.json { render :json => {} }
end

不起作用

respond_to do |format|
  format.json { head :ok }
end

不起作用

respond_to do |format|
  format.json { render :nothing => true }
end

当我检查ajax响应中发生的事情时,我看到它不起作用的情况我得到了“parseError”。

据我所知,发送回的内容类型不同(text / javascript vs applicaiton / json),但我仍然希望最后2个案例能够正常运行,因为它们将200发送回服务器。

(代码来自:http://net.tutsplus.com/tutorials/javascript-ajax/using-unobtrusive-javascript-and-ajax-with-rails-3/

1 个答案:

答案 0 :(得分:0)

format.json { head :ok }

format.json { render :nothing => true }

不起作用,因为他们没有返回有效的json。 head :ok只会将响应标头设置为200,而:nothing => true将呈现一个无效的json的空白页/文档。