2013-03-18 4 views
0

Я, вероятно, отсутствует что-то очень простое, но был бы признателен за небольшую помощь здесьRails выбор формы хелперы

<%= 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"]]) %> 

Развейте вопрос -: Так как я использую выберите вариант в нескольких местах, где мой вариант значение такое же, как печатные строки, есть лучший способ идти о это?

+0

select_tag => сам в качестве параметра, чтобы установить параметр ... Читать ссылку http://apidock.com/rails/ActionView/Helpers/FormTagHelper/select_tag – Rakesh

ответ

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 
+0

Должно быть имя тега внутри options_for_select или снаружи, оба дают одинаковые результаты при просмотре источника в HTML <% = select_tag 'filters [order_sales_channel]', options_for_select ( [[«Веб», «Веб»], [«Телефон», «Телефон»] ], ), selected: filter_params ['order_sales_channel'], multiple: true, класс: "advancedSearchFormSelectBox"%> –

Смежные вопросы