工作正常:
post :create, params_with_product
它也是:
put :update, id:@item, item: params_with_product
但是当我这样做时,语法错误语法错误unexpected keyword_end, expecting '}'
失败了:
put :update, :id => @item.id, params_with_product
其中:
let(params_with_product) { item: FactoryGirl.attributes_for(:item_without_product) }
答案 0 :(得分:3)
尝试put :update, { :id => @item.id }.merge(params_with_product)
答案 1 :(得分:1)
添加djaszczurowski的答案是正确的。
对于request spec,您必须发送params
哈希(key: value
对)作为请求的参数,其中value
可以是哈希本身。因此,post
,put
方法可以将params
哈希作为参数。
在你的第一个案例中,它有效:
post :create, params_with_product
因为params_with_product
是哈希(有效key: value
对)
但是,在第二种情况下:
put :update, :id => @item.id, params_with_product
它失败了,因为第二个参数没有任何key
。
因此,您可以将:id => @item.id
与params_with_product
合并,再次返回哈希值(有效key: value
对)并正常工作。