2012-01-08 66 views
0

我承認對此有點難以理解,因爲我一直在做rails的一段時間。 我試圖從多選組合框中獲取params[]中的值數組。Rails 2.3.8多重選擇不返回數組,即使使用<select name ='foo []'multiple ='multiple'>

這是軌道2.3.5和紅寶石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> 

注意選擇標籤的名字在「[]」結束,「多」選項。 如果我在控制器動作的頂部設置調試斷點,看看params[:shows]

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

捕獲的值是正確的,但我曾預計["17","18","19"],即一個由N個元素組成的數組,而不是由N個逗號分隔值組成的單個元素的數組。

我可以很容易地編碼,但我很困惑,因爲我非常確定這曾經工作,我期望的行爲是記錄的行爲。有任何想法嗎?

+0

我看着http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag#691-sending-an-array-of-multiple-options,並認爲你的輸出看起來不錯。我甚至在一個Rails 2.3.11項目上嘗試過它,並且它按照你的期望工作。如果你只是在apidock上展示的方式做一些事情,它在2.3.8中工作嗎? – 2012-01-08 18:36:46

+0

更正,我在2.3.5不是2.3.8。實際上,我已將跟蹤堆棧跟蹤到ActionController :: Dispatcher.call(),並且params ['show']即使在調用時也具有上述值。 – 2012-01-08 19:20:59

回答

0

該參數由Rack::RequestRack::Utils解析。你應該看看this類。請注意,鏈接不一定指向您正在使用的Rack版本。

相關問題