2012-01-08 5 views
0
私はいくつかの時間のためにレールを行ってきたので、私は、これに困惑ビットであることを認める

。 複数選択のコンボボックスからparams[]に値の配列を取得しようとしています。Railsの2.3.8複数選択していなくても、<SELECT名前=「FOO []」複数=「複数の」>で、配列を返す

これはレール2.3.5とRuby 1.8.6(私が知っている、私が知っている)です。

生成されたHTMLは次のとおりです。

<select id="shows_" multiple="multiple" name="shows[]"> 
    <option value="5">A Grand Night For Singing (Jan - Feb 2007)</option> 
    <option value="6">Who's Afraid of Virginia Woolf? (Mar - Apr 2007)</option> 
    ...more options... 
</select> 

注selectタグの名前が「[]」で終わると「複数の」オプションが設定されていること。

(rdb:62) p params[:shows] 
["17,18,19"] 

キャプチャ値が正しいですが、私は、["17","18","19"]すなわち、予想していた:私は、コントローラのアクションの先頭にデバッグブレークポイントを設定し、params[:shows]を見れば カンマ区切りのN個の値からなる単一要素の配列ではなく、N個の要素の配列。

私はこの周りに簡単にコードできたが、私はこれが動作するために使用し、私は期待してい動作が文書化された動作ですかなり確信しているので、私は困惑しています。何か案は?

+0

私はhttp://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag#691-sending-an-array-of-multiple-optionsを見て、あなたの出力が右に見えることに同意します。私はRails 2.3.11プロジェクトでもそれを試してみました。期待通りに機能しました。もしあなたがアイドルの上に提示されたやり方でちょっとしたことをしたら、それは2.3.8で動作しますか? –

+0

修正、私は2.3.5ではなく2.3.8です。私は実際にActionController :: Dispatcher.call()にスタックトレースをたどり、params ['show']は呼び出しのその時点でも上記の値を持っています。 –

答えて

0

paramsがRack::RequestRack::Utilsによって解析されます。 thisクラスを見てください。リンクが必ずしも使用しているRackのバージョンを指しているとは限りません。

関連する問題