我在 Rspec 中编写了以下代码来测试我的一个控制器中的更新函数,该函数更新表中的记录,该表T
具有 10 个属性。在我的控制器的更新函数中,我收到了参数,params[:xyz][:id ], params[:xyz][:attr1] and so on.
所以我调用函数 update 来更新 table 的两个属性T
,在 Rspec 代码中如下:
it "should update the attributes properly" do
put :update, :id=>123, :xyz => {:id => 123, :attr1 => value of attr1, :attr2 => value of attr2}
end
在这里,我已将 ID 传递到外部,因为rake routes
我发现 ID 出现在更新功能的 URL 末尾,为controller name/update/id
. 在我的控制器的更新功能中,我通过以下代码收到了 id
params[:xyz][:id] = params[:id] if params[:xyz] and not params[:xyz].key?(:id)
但这不起作用。它给出了以下错误。
NoMethodError:
undefined method `key?' for "123":String
因此,如果有人帮助我纠正这个问题,我将不胜感激。谢谢你。