0

Rspec で次のコードを記述して、T10 個の属性を持つテーブルのレコードを更新するコントローラーの 1 つで更新機能をテストしました。コントローラーの update 関数でパラメーターを受け取ったparams[:xyz][:id ], params[:xyz][:attr1] and so on.ので、関数 update を呼び出して table の 2 つの属性を更新します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 を外部に渡したのは、IDrake routesが更新関数の 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