为什么respond_with没有从我的模型返回json?

eri*_*cvg 7 mongoid ruby-on-rails-3

为什么在这种情况下不响应_with响应json?我正在用一个明确的.json调用该动作(/tasks/4e3c1163a19d461203000106/items/4e4c27dfa19d46e0e400000a.json)

在我的控制器 -

class Tasks::TasksController < Tasks::BaseController
  respond_to :html, :js, :json

  def update
    @task = @taskgroup.update_task(params[:id], params[:task])
    @taskgroup.save
    respond_with @task
  end
end
Run Code Online (Sandbox Code Playgroud)

当我覆盖to_json并添加一个断点时,它没有被击中.回应是:

{}
Run Code Online (Sandbox Code Playgroud)

如果我用对to_json的显式调用替换respond_with:

respond_with @task do |format|
  format.json { render json: @task.to_json }
end
Run Code Online (Sandbox Code Playgroud)

反应很完美:

{
"_id":"4e4c27dfa19d46e0e400000a",
"assigned_to":null,
"comments"  [{"_id":"4e4c2fd7a19d46e127000014", 
[SNIP]
Run Code Online (Sandbox Code Playgroud)

它在后一种情况下工作正常,但我想弄清楚为什么第一个不起作用.这适用于我的应用程序中的其他控制器和模型.不确定它是否是一个mongoid的东西?(rails 3.0.9/mongoid 2.1.8)

Ger*_*rry 2

好吧,看看进展如何。当您在操作respond_with内部调用update时(如果对象有效),它将重定向到该show操作(如果您不希望出现此默认行为,则必须提供给location: "other_action")respond_with。