在我的规范中,当我在下面运行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有不同的语法我不知道吗?
答案 0 :(得分:3)
要修复语法错误,请使用put :update, { id: 3 }, request_payload
,而不是put :update, id: 3, request_payload
。 Ruby只支持“裸”(例如无卷曲)哈希作为方法的最后一个参数,因此id: 3
不能出现在参数列表的中间而不用花括号括起来。