这个控制器的创建动作工作正常,但几乎相同的更新只是返回204,无论如何

时间:2014-06-01 21:37:08

标签: ruby-on-rails

def create
    if request.headers['Auth'] == User.first.token
      @post = Post.create(post_params)
      @post.save
      respond_with(@post)
    else
      error =   { error:  'gotta be authed to create' }
      respond_with(error, :status => 401, location: nil)
    end
  end

 def update
    if false #request.headers['Auth'] == User.first.token
      @post.update_attributes(post_params)
      respond_with(@post)
    else
      error =   { error:  'gotta be authed to edit' }
      respond_with(error, :status => 401, location: nil)
    end
  end

enter image description here

编辑:

显然这被铁路团队认为是处理PUT的正确方法(我不知道为什么)任何人都可以给我一些关于他们如何处理response_with实际行为一致的见解?

请参阅这些问题/ pullreqs以更好地了解rails如何认为此响应正确 https://github.com/rails/rails/issues/9862 https://github.com/rails/rails/pull/9887

1 个答案:

答案 0 :(得分:0)

好的,显然你只需要将一个块传递给respond_with,如果你想自定义它 - 请参阅https://stackoverflow.com/a/18929275/1429856

我的解决方案是改变

respond_with(error, :status => 401, location: nil)

  respond_with error do |format|
    format.json { render json: error, :status => 401, location: nil }
  end