我正在尝试使用options_for_select
为这个简单的应用程序实现多选下拉菜单,但我无法让它工作。
我的模特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"
.............................省略
使用这些代码,我可以获得一个选择下拉菜单,但我需要一个多选下拉菜单。 感谢
答案 0 :(得分:0)
根据Rails api,select
方法采用以下参数:
select(object, method, choices = nil, options = {}, html_options = {}, &block)
:multiple => true
是一个html选项,因此它应该是select
的最后一个参数
此外,我认为您不需要include_blank
和prompt
,因为它们的目的相似,但略有不同。有关差异的解释,请参阅此answer
因此请尝试:
<%= f.select :market, options_for_select(@markets), :prompt=> 'Select all', :multiple => true %>
我现在无法对此进行测试,所以请告诉我是否有效