Select in fields_for not selecting

I have a user who has a location that location contains a country_id.
Location has a polymorphic interface locatable.

What works:
The user can edit their name, country and city. This all saves to the DB
on the update put.

The problem:
Returning to the edit page shows the textfield’s name and city populated
but the country select form element defaults to blank. The value for
user.location.country_id is saved in the DB but the form element refuses
to show this as “selected”. I have attempted explicityly setting the
selected :option but still, it fails to show country.


has_one :location, :as => :locatable, :dependent => :destroy

belongs_to :country
belongs_to :locatable, :polymorphic => true

has_many :locations

<% form_for @user, :html => { :multipart => true } do |form| %>

<%= form.label :name %> <%= form.text_field :name %>

<% fields_for “user[location_attributes]”,@user.location do
|location_fields| %>

<%= location_fields.label :country_id %> <%= :country_id, Country.find(:all).map { |c| [,] }, { :include_blank => true } %>
<%= location_fields.label :city %> <%= location_fields.text_field :city %>
<%- end -%>

<%= form.submit ‘Update’ %>
<% end %>


def edit
@user = User.find(params[:id])

def update
@user = User.find(params[:id])
@user.attributes = params[:user]!
flash[:notice] = “Your profile has been updated.”
redirect_to url_after_update

rescue ActiveRecord::RecordInvalid
render :action => “edit”

I forgot to mention.
I adjusted the fields_for name to “user[location]” in case
“_attributes” was causing the problem.

You may want to consider adding attr_accessible for the editable
fields in your model.


On Jan 14, 5:11 pm, Adam madd02 [email protected]

Thanks for your reply DKM,

I have location_attributes listed in the users attr_accessable list and
use attr_protected for the :locatable_id and :locatable_type in

Just to check that there are no attribute access issues i commented out
attr_accessible and attr_protected’s in the user and location models. It
still did not set the select.

I believe it’s soemthing to do with the select name generated from the


but im not sure what.

This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.

| Privacy Policy | Terms of Service | Remote Ruby Jobs