Search code examples
ruby-on-railsactionviewactionviewhelper

Rails: Preselect a value in ActionView-Helper 'collection_select'


I'm trying to get the ActionView-Helper collection_select to take a value that will be preselected in the dropdown-menu.

Neither (:selected in the html-option-hash)

<%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {}, {:selected => @my_collection_object.id}) %>

nor (:selected in the option-hash)

<%= collection_select(:my_object, :my_method, @my_collection, :id, :description_string, {:selected => @my_collection_object.id}, {}) %>

seem to work.

What am I doing wrong? Can anyone help me on this one?


Solution

  • From the docs:

    Sample usage (selecting the associated Author for an instance of Post, @post):

    collection_select(:post, :author_id, Author.all, :id, :name_with_initial)
    

    If @post.author_id is already 1, this would return:

    <select name="post[author_id]">
      <option value="">Please select</option>
      <option value="1" selected="selected">D. Heinemeier Hansson</option>
      <option value="2">D. Thomas</option>
      <option value="3">M. Clark</option>
    </select>
    

    So you just need to make sure that @my_object.my_method returns a value that matches one of the available option values. If there's a match then that option will be selected.