我可能遗漏了一些非常简单的东西,但在这里会有点帮助
<%= select_tag('filters[order_sales_channel]',filter_params['order_sales_channel'],:multiple=>true,:class=>"advancedSearchFormSelectBox") %>
然后我想给出选择
的选项<option value="Web">Web</option>
<option value="Phone">Phone</option>
我怎样才能做到这一点?我尝试了这个,但它无法正常工作
<%= select_tag('filters[order_sales_channel]',filter_params['order_sales_channel'],:multiple=>true,:class=>"advancedSearchFormSelectBox") %>
<%= options_for_select([["Web", "Web"], ["Phone", "Phone"]]) %>
跟进问题 - :由于我在多个地方使用select选项,其中我的选项值与打印字符串相同,是否有更好的方法可以解决这个问题?
答案 0 :(得分:1)
正确的方法是:
<%= select_tag 'filters[order_sales_channel]',
options_for_select(
[["Web", "Web"], ["Phone", "Phone"]],
selected: filter_params['order_sales_channel']
),
multiple: true,
class: "advancedSearchFormSelectBox" %>
如果您的选项始终相同,只需在相关类中对其进行硬编码:
class Order < ActiveRecord::Base
SELECT_OPTIONS = %w[Web Phone].map( &:freeze ).freeze
def self.select_options
SELECT_OPTIONS.map{|o| [o,o] }
end
end
然后您可以在options_for_select
:
options_for_select Order.select_options
我喜欢这个解决方案,因为您还可以在验证中使用SELECT_OPTIONS
:
validates :some_attribute, inclusion: SELECT_OPTIONS