在RSTP中接收PUT的错误,但不是POST

时间:2012-10-23 05:35:30

标签: ruby-on-rails json api rspec

在我的规范中,当我在下面运行POST请求时,一切正常。

    before do
      request_payload = {
        player: {
          first_name: "Joe",
          last_name: "Carradine",
          team_id: "1"
        }
      }

      post :create, request_payload
    end

但是当我为PUT运行规范时:

    before do
      request_payload = {
        player: {
          first_name: "Buck",
          last_name: "Carradine",
          team_id: "1"
        }
      }

      put :update, id: 3, request_payload
    end

我收到这样的错误:

[filename]_spec.rb:139: syntax error, unexpected '\n', expecting tASSOC (SyntaxError)

[filename]_spec.rb:198: syntax error, unexpected $end, expecting keyword_end

有什么想法吗? PUT有不同的语法我不知道吗?

1 个答案:

答案 0 :(得分:3)

要修复语法错误,请使用put :update, { id: 3 }, request_payload,而不是put :update, id: 3, request_payload。 Ruby只支持“裸”(例如无卷曲)哈希作为方法的最后一个参数,因此id: 3不能出现在参数列表的中间而不用花括号括起来。