xxx
xxx

Reputation: 516

Rails f.select default selected

I have select

<%= f.select :visibility, collection_for_visibility_select, :include_blank => false %>

And a helper with values for select:

def collection_for_visibility_select
  [
    [l(:label_crm_contacts_visibility_project), Contact::VISIBILITY_PROJECT],
    [l(:label_crm_contacts_visibility_public), Contact::VISIBILITY_PUBLIC],
    [l(:label_crm_contacts_visibility_private), Contact::VISIBILITY_PRIVATE]
  ]
end

I want to add default select value to the select, and this is what I tried:

<%= f.select :visibility, collection_for_visibility_select, :selected => Contact::VISIBILITY_PUBLIC, :include_blank => false %>

it gave me default select value, but when i want to edit record and switch visibility to something else,i still got VISIBILITY_PUBLIC

How do I fix it?

Upvotes: 2

Views: 2876

Answers (1)

Yury Lebedev
Yury Lebedev

Reputation: 4005

You can try this:

<%= f.select :visibility, collection_for_visibility_select, :selected => (f.object.visibility.nil? ? Contact::VISIBILITY_PUBLIC : f.object.visibility), :include_blank => false %>

It will read the value from the model first, and if it is nil, will use the default value.

Upvotes: 2

Related Questions