0

我在 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

因此,如果有人帮助我纠正这个问题,我将不胜感激。谢谢你。

4

0 回答 0