Bhushan Lodha
Bhushan Lodha

Reputation: 6862

Setting default value for Rails select helper block

How can I set default value in Rails select helper block?

<div class="field">
  <label>Gender</label>
  <%= f.select :gender, [], { prompt: 'Select gender', selected: 'Female' }, { :class => 'ui selection dropdown' } do %>
    <% Subject.genders.keys.each do |c| %>
      <%= content_tag(:option, value: c, class: 'item') do %>
        <%= content_tag(:i, '', class: "#{c.downcase} icon") %>
        <%= content_tag(:span, c) %>
      <% end %>
    <% end %>
  <% end %>
</div>

I tried setting it with :selected option but it doesn't work.

Upvotes: 1

Views: 1608

Answers (1)

孙悟空
孙悟空

Reputation: 1285

I don't think if selected exist for f.select.

You can use options_for_select(values, value_selected)

Suggestion: You can create a file named app/helpers/select_helper.rb. In this file, you create a function like this:

def subject_genders_values
  Subject.genders.each do |c|
    [c.value, c.value]
  end
end

your function subject_genders_values can be re-used. And every time if you want a select box, you can create your function in this file. Notice: add

include SelectHelper

in application_helper.rb

And your views:

<%= f.select :gender,options_for_select(subject_genders_values, 'Female') %>

The option Female will be selected if it's a part of the list.

Upvotes: 1

Related Questions