Need to print "selected=selected" when editing a form

I have looked at this gropu and this page
http://api.rubyonrails.com/classes/ActionView/Helpers/FormOptionsHelper.html#M000506

…but I am unable to figure this out.

Here are my tables (short version)
People
id
fname
lname
state_id
States
id
name

I have the _form.rhtml working in a basic sense:
State: <%= select(“person”,
“state_id”, State.find(:all).collect {|s| [s.name, s.id]} ) %>

It works fine when I am creating a new record. I select the state I
want and the ID goes into the state_id field. The problem is when I
go to edit the page it defaults to “Alabama,” the first record. I
need it to select the correct state ID. I have played with it a lot
and basically I need it to print this: selected=“selected” on the
correct state.

Suggestions?

thanks

On 9/27/07, Aaron R. [email protected] wrote:

lname
want and the ID goes into the state_id field. The problem is when I
go to edit the page it defaults to “Alabama,” the first record. I
need it to select the correct state ID. I have played with it a lot
and basically I need it to print this: selected=“selected” on the
correct state.

Your controller needs to load the current row into an instance
variable called @person. The selected state will be taken from
@person.state_id

Show us your controller code.

def edit
@person = Person.find(params[:id])
@interests = Interest.find(:all)
@ministries = Ministry.find(:all)
@phones = Phone.find(:all)
@states = State.find(:all)
end

def update
@person = Person.find(params[:id])
@person.interests = Interest.find(@params[:interest_ids]) if
@params[:interest_ids]
@person.ministries = Ministry.find(@params[:ministry_ids]) if
@params[:ministry_ids]

if @person.update_attributes(params[:person])
  flash[:notice] = 'Person was successfully updated.'
  redirect_to :action => 'show', :id => @person
else
  render :action => 'edit'
end

end

thanks

if you :selected option to select helper it will work, some thing like
this,

State: <%= select(“person”,
“state_id”, State.find(:all).collect {|s| [s.name, s.id]}, {:selected
=>@person.state_id} ) %>

I get the same problem. by default it has “alamaba” showing up and
nothing is “selected=selected” in the html code.

hmmmm…

hey Aaron,

State: <%= select(“person”,
“state_id”, State.find(:all).collect {|s| [s.name, s.id]}, {:selected
=>@person.state_id} ) %>

even after trying above code, are you facing same problem?
why because, according to rails document if you pass :selected options
surely it should work.

the 4th argument to select…

<%= select(“person”, “state_id”, State.find(:all).collect {|s|
[s.name, s.id]}, {:selected =>@person.state_id} ) %>

On Oct 8, 2007, at 10:23 AM, Aaron R. wrote:

I get this: compile error
script/…/config/…/app/views/people/_form.rhtml:94: syntax error,
unexpected kEND, expecting ‘)’

You are missing a ‘)’ somewhere above the line with the ‘end’ (i.e.,
line 94) and the interpreter knows that ‘end’ isn’t valid at that
point so that’s where it complains.

-Rob

Rob B. http://agileconsultingllc.com
[email protected]

I get this: compile error
script/…/config/…/app/views/people/_form.rhtml:94: syntax error,
unexpected kEND, expecting ‘)’