2015-12-23 41 views
3

我正在嘗試使用搜索參數對話框進行多選擇下拉菜單工作。我可以使下拉多選,但似乎無法獲得/傳遞結果數據。 (編輯/新信息將以斜體顯​​示)你如何使軌道多選擇下拉菜單

我認爲問題的根源在於我需要更改控制器中的permit部分以反映我正在傳遞散列/數組。如果我查看結果記錄,我設置爲多選的2個字段顯示爲零。但是,如果我強制執行錯誤,則由rails顯示的參數顯示正確的選項。因此,我認爲問題可能出現在許可證部分。

這看起來像

*def search_params 
     params.require(:search).permit(:document_title, 
            :summary, 
            :owner, 
            :category, 
            :file_name, 
            :doc_to_email, 
            :categories_attributes => [:name]) 
    end* 

我加了:categories_attributes => [:名字],試圖讓控制器允許哈希值,但沒有奏效。

選擇欄是

<%= f.select :category[], options_for_select(@categories.sort), {:include_blank => true}, {:multiple => true, :size =>10} %> 

但是這給了我

.erb其中線#41提出:

錯誤的參數數目(0 1..2)跟蹤模板包含: app/views/searches/new.html.erb

我以爲我不得不將類別設置爲[]的數組,但顯然我錯過了一些東西。

類別是搜索表中的字符串字段。

+0

嘗試像'<%= f.select:類別[], options_for_select(@ categories.sort) {:include_blank =>真, :多個=>真,:大小=> 10}%>' – Abhi

回答

4

您不需要在字段名稱後加上[]括號,因爲Rails會自動添加它們。

在這裏看到的例子: http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag

select_tag "colors", "<option>Red</option><option>Green</option><option>Blue</option>".html_safe, multiple: true 
# => <select id="colors" multiple="multiple" name="colors[]"><option>Red</option> 
# <option>Green</option><option>Blue</option></select> 

根據你的情況選擇的值將作爲一個數組中params[:search][:category]提交表單後。

如果您使用強參數,還請確保您在允許列表中有:category => []

+0

這沒有奏效。看來,當我將選擇更改爲多個時,數據不會寫入這些字段。我發現了一些說我需要更改控制器的允許部分以反映我傳遞數組/散列的事實。我要改變我原來的帖子來反映這個信息。 –

+0

這有幫助嗎? http://stackoverflow.com/a/16555975/1242470 –

+0

工作! - 您提供的鏈接有解決方案。我在permit部分添加了':category => []'。數組/散列參數現在正在傳遞。 –