Rspec で次のコードを記述して、T
10 個の属性を持つテーブルのレコードを更新するコントローラーの 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
ですから、誰かがこの問題を解決するのを手伝ってくれたら、本当に感謝しています。ありがとうございました。