2012-07-14 55 views
0

在我的應用程序中,setlists有很多歌曲,反之亦然,通過名爲allocations的模型。在我的表單中,我希望用戶能夠通過創建新分配來從現有庫中選擇歌曲以添加到集合列表。我遇到的問題是我想使用多選框,但無論選擇哪首歌曲,歌曲ID在保存時都會設置爲1。我現在的形式如下:Rails表單生成器選擇框問題參數不通過

<div> 
    <%=nested_form_for @allocation do|builder|%> 
    <%=builder.label :song_id, "Pick a song" %> 

    <%= builder.hidden_field :setlist_id, value: @setlist.id %> 

    <%= builder.select(:song_id, options_for_select(@selections), 
    {}, {multiple: true, size: 7}) %> 

    <%= link_to "Cancel", setlist_path(@setlist), class: "btn btn-large btn-danger" %> 

    <%=builder.submit "Add Song", class: "btn btn-large btn-primary", id: "addSongToSet" %> 
    <% end %> 
</div> 

這種形式的正常工作,如果我添加「:HTML」的多重選擇框,即:

<%= builder.select(:song_id, options_for_select(@selections), 
    {}, html: {multiple: true, size: 7}) %> 

但是這則更改窗體回單下拉框。

當我嘗試使用多選擇框呈現的HTML是:

<select id="allocation_song_id" multiple="multiple" name="allocation[song_id][]" size="8"> 
<option value="1">...</option> 
<option value="2">...</option> 

我知道這個問題是說,名字=「分配[song_id] []」,它似乎是行傳遞一個空值的散列。我只是不知道如何解決這個問題,同時使用多選框。

的@selections在控制器被發現:

@selections = Song.all.collect {|s| [ [s.title, s.artist].join(" by "), s.id] } 

預先感謝任何幫助。

回答

0

我正在使用多個選擇標籤來選擇多個產品。

我取的產品陣列,並顯示爲,

 
= select_tag "products", options_from_collection_for_select(@products, :id, :product_name), :multiple => true 

所以在PARAMS [:產品]你會得到一個選擇的產品標識。 它爲我工作。