0

RSPecテストで問題が発生しました。テストは、リクエスト内のいくつかのオブジェクトを使用してPUTを実行します。PUTを受信したコントローラーが正しい値を取得していないようです

たとえば、'put:update、:id => @ channel.id、:channel => @channel、:tags => @tag'次に、コントローラーでparams [:tags]を使用しようとすると、その場所の整数。仕様とコントローラーメソッドの概要はhttps://gist.github.com/3715021にあります

これは、Rails3.0.13から3.1.8にアップグレードしたときに発生し始めました。

ここで何が起こっているのか、そしてそれをどのように解決するのか、何か考えはありますか?

4

2 に答える 2

0

私たちはあなたが何をしようとしているのかわからないので、これはあなたを助けるのが難しいです。たとえば、より多くのテスト(たとえば、変数として設定した値)とテストの特定の結果を表示すると便利です。

とにかく、@ tags変数はarelオブジェクトですか?もしそうなら、渡される値としてIDを期待していますか?そうでない場合は、@tagsで参照されている属性を指定することをお勧めします。たとえば、@ tags.name ...または、@ tagsはハッシュ自体を参照しますか?

于 2012-09-21T01:36:19.733 に答える
0

それ@tagはあなたのタグモデルのオブジェクトだと思います。Railsに次のようなオブジェクトを与えると

`get :action, :foo => foo`

またはURLヘルパー(例foo_path(foo))で、

#to_paramRailsは、オブジェクトをメソッドを介したURLでの使用に適したパラメーターに変換します。Tag#to_paramデータベース内のタグのIDを返すため、おそらく整数を取得しています。

対照的に、更新アクションはハッシュであると想定しているように見えますparams[:tags]。おそらく、のような値のフィールドを含むフォームから生成されますtags[:name]

関連するコードについてもっと知ることなしに、私はこれ以上助けることはできません。しかし、私はあなたがしたいことはあなたのテストを読むように変更することだと思います

put :update, :id => @channel.id, :channel => @channel, :tags => { :name => 'tag' }

またはそのようなもので、更新アクションにPUTするフォームを実際に送信することによって取得するパラメータを模倣します。

于 2012-09-21T14:02:27.573 に答える