Select helper and issues with :selected


#1

I have this code:

<%= select ‘stuff’, ‘id’, Stuff.find_by_sql( “SELECT stuffs.value,
stuffs.id from stuffs WHERE account_id = " + @account.id.to_s + " ORDER
BY stuffs.value ASC” ).collect{ |a| [a.value, a.id] }, {:include_blank
=> true, :selected => @user.stuff_profile.to_s } %>

The issue is is that the blank space is added but the value is not set
as selected. I have this same code (only using a different table) and
that code adds the blank space and selects the correct drop down item.
When I view the html everything looks good - option has a value as the
id and I am telling it to select using the id. As far as I can see this
should work, but it doesn’t. Any ideas of what I am doing wrong. Thanks,

-S


#2

On Mar 19, 2:56 pm, Shandy N. removed_email_address@domain.invalid
wrote:

I have this code:

<%= select ‘stuff’, ‘id’, Stuff.find_by_sql( “SELECT stuffs.value,
stuffs.id from stuffs WHERE account_id = " + @account.id.to_s + " ORDER
BY stuffs.value ASC” ).collect{ |a| [a.value, a.id] }, {:include_blank
=> true, :selected => @user.stuff_profile.to_s } %>

I’m not sure what stuff_profile is, but the fact that you’re
converting it, whatever it is, to a string means that it’s guaranteed
not to be equal to any of those ids.

Fred


#3

Frederick C. wrote:

I’m not sure what stuff_profile is, but the fact that you’re
converting it, whatever it is, to a string means that it’s guaranteed
not to be equal to any of those ids.

Fred

I added that as a last ditch effort to try and make it work but with no
luck. even without it it still doesn’t work.


#4

Shandy N. wrote:

I added that as a last ditch effort to try and make it work but with no
luck. even without it it still doesn’t work.

The stuff_profile is just a field with an id in it would should match
the value in the option - not well named, I know.


#5

On 19 Mar 2009, at 15:09, Shandy N. wrote:

luck. even without it it still doesn’t work.
what is stuff_profile ? what ever you pass to :selected should be an
integer that will be == to the id of one of the instances of Stuff you
are returning

Fred


#6

I changed the find and still nada. Here is what I got now:

<%= select( ‘stuff’, ‘id’, Stuff.find( :all, :conditions => [‘account_id
= ?’, @account.id.to_s], :order => ‘value ASC’).collect{ |a| [a.value,
a.id] }, { :include_blank => true, :selected => @user.stuff_profile })
%>

@user.stuff_profile is an id and when I look at the html there is an
option field with that id as it’s value, so it should find it and make
it the selected option. I beginning to wonder if this is a bug in the
helper?


#7

On Mar 19, 4:08 pm, Shandy N. removed_email_address@domain.invalid
wrote:

I changed the find and still nada. Here is what I got now:

<%= select( ‘stuff’, ‘id’, Stuff.find( :all, :conditions => [‘account_id
= ?’, @account.id.to_s], :order => ‘value ASC’).collect{ |a| [a.value,
a.id] }, { :include_blank => true, :selected => @user.stuff_profile })
%>

@user.stuff_profile is an id

Is it definitely an integer ? (ie “1” is != 1)

Fred
and when I look at the html there is an


#8

Frederick C. wrote:

On Mar 19, 4:08�pm, Shandy N. removed_email_address@domain.invalid
wrote:

I changed the find and still nada. Here is what I got now:

<%= select( ‘stuff’, ‘id’, Stuff.find( :all, :conditions => [‘account_id
= ?’, @account.id.to_s], :order => ‘value ASC’).collect{ |a| [a.value,
a.id] }, { :include_blank => true, :selected => @user.stuff_profile })
%>

@user.stuff_profile is an id

Is it definitely an integer ? (ie “1” is != 1)

Fred
and when I look at the html there is an

Nope, you are correct, I’m an idiot. The field was a chcracter varying
field and when I added a to_i method call it worked. Sorry Fred, I guess
I did understand what you were getting at, in the future I’ll know
better. Thanks for the help.

-S