Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Rails 3 build a select tag with has_many belongs_to association

Based on following models

class Company < ActiveRecord::Base
  belongs_to :country
end

class Country < ActiveRecord::Base
  has_many :companies
end

I want to have in my companies/_form a select tag containing all the countries

I think that the Company.new(params[:company]) in companies_controller#create can create the association between company and the selected country

I'm running rails 3.0.0, what is the best way to achieve that?

thanks for your insights

like image 389
denisjacquemin Avatar asked Sep 21 '10 19:09

denisjacquemin


1 Answers

collection_select should do the trick for you:

collection_select(:company, :country_id, Country.all, :id, :name, :prompt => 'Please select country')

The above code assumes that the countries table have a name column. If it doesn't, replace the fifth parameter with whatever the column of the country name is.

:prompt means that you're forcing the user to choose one country.

Find more information in the Rails API documentation.

like image 97
vonconrad Avatar answered Nov 16 '22 04:11

vonconrad