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

在我的规格中,当我在下面运行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是否有不同的语法我不知道?

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