how to pre-select a collection_select inside a form_for?

I have a form_for like:

<%= form_for @user, … |f| %>

<%= f.collection_select :friend_type, FriendType.all, :id, :name %>

Now in my new action, I set the friend_type from the querystring, so it already has a value of e.g. 3 (which is the id).

How can I have this pre-selected when it renders?

Set the html_options parameter in collection_select to { :selected => params[:friend_type] }

might help you on this. It seems to depend on what exact objects
you've got set up. I'm not too clear on it myself!


I'm curious what you have as far as relationships in your FriendType
model? Does it belong_to :user?

If so,

<%= f.collection_select(:user_id, FriendType.all, :id, :name, options=
{:prompt => false}, {:class => 'yourCustomClass'}) %>

Hope that helps you out.

thanks I’ll try that tonight.

Ok I added:


And my select is actually empty, it has no options! But when running rails server I can see the select and options (and the dropdown list in the browser).

Why is it not rendering using capybara?

My controller for new is:

@account =

My view page has:

<% form_for … %>

<%= f.label :plan_type%>

<%= f.collection_select :friend_type, FriendType.all, :id, :name, { :selected => params[:friend_type] } %>


My test looks like:

describe “User pages” do

subject { page }

describe “new” do

before { visit ‘/user/new’ }

describe “with valid information” do

before do

select ‘XXXX’, :from => “user[friend_type]”

fill_in …


it “should create a user” do

expect { click_button “Create”}.to change(User, :count).by(1)





Is this a timing issue?

ok figured it out, I had to run seed on my test db.