2016-08-11 22 views
1

私はこの単純なアプリケーションのためにoptions_for_selectを使用してマルチ選択ドロップダウンメニューを実現しようとしていますが、動作させることはできません。options_for_select Rails 4

マイモデルsearch.rb

class Search < ActiveRecord::Base 
def search_books 
    books = Book.all 
    books = books.where(["market LIKE ?",market]) if market.present? 
    return books 
end 

マイsearch_controller.rb

def new 
    @search = Search.new  
    @markets = Book.uniq.pluck(:market) 
    end 

マイ検索フォーム

<%= form_for (@search) do |f| %> 

    <div class="field"> 
    <%= f.label :market %><br> 
    <%= f.select :market, options_for_select(@markets),:multiple => true, :include_blank => true, :prompt=>'All' %> 

マイブック表

create_table "books", force: :cascade do |t| 
t.string "name" 
t.string "market" 
t.string "function" 

...........................省略

これらのコードでは、1つの選択ドロップダウンメニューが表示されますが、マルチ選択ドロップダウンメニューが必要です。 おかげ

答えて

0

Rails apiによると、select方法は、これらの引数を取ります。

select(object, method, choices = nil, options = {}, html_options = {}, &block) 

:multiple => trueは、HTMLオプションなので、select

の最後の引数でなければなりません。また、私は「あなたがドンと思いますinclude_blankpromptの両方が必要ですが、これらは同じ目的を果たしますが、わずかに異なります。違いの説明については、このanswerを参照してください

したがって、これを試してみてください。

<%= f.select :market, options_for_select(@markets), :prompt=> 'Select all', :multiple => true %> 

を私は今、この権利をテストするので、それはあなたが埋めることができますしてください

+0

を動作するかどうか私に知らせすることはできませんよ私のための空白に。私は、これらのコードをどうすればよいのでしょうか?<%= f.select:market、options_for_select(@markets)、multiple => true、>:include_blank => true、:prompt => 'All'%>は – user109705

+0

のように表示されます。 。それが動作するかどうかを確認する – Ren