form_for and select ( => f.select)

Hi All

I'm trying to combine the from_for and select helpers

Right now I have
  form_for :service, :url => ...... do |f|

  select("abc", "xyz_id", @my_arr.collect {|item| [ item, "bla" ] },
{:prompt => "opt1"} )

  ....
  end

What I want to do is something like

  ....
  f.select("abc", "xyz_id", @my_arr.collect {|item| [ item, "bla" ] },
{:prompt => "opt1"} )
  ....

(this doesn't work)
I've tried many things but I cannot get this to work, any suggestions ?

thnx a lot
LuCa

You shouldn't need that first parameter (which effectively provided by
the form_for)

Fred

Frederick Cheung wrote:

What version of rails?

Show us the whole form_for call please.

Tell us about the error--what's the message, and which line causes it?

Roy Pardee wrote:

What version of rails?

Show us the whole form_for call please.

Tell us about the error--what's the message, and which line causes it?

I'm using rails 2.0.2
In the view(haml):

- form_for :xyz, :url => my_url(params[:my_id],@vals), :html => {:method
=> 'put', :multipart => true} do |f|
  f.select("xyz_id", @my_arr.collect {|item| [ item, "bla" ] },
end

The ERROR:

undefined method `merge' for [["A", "bla"], ["B", "bla"], ["C",
"bla"]]:Array

Trace:

vendor/rails/actionpack/lib/action_view/helpers/form_options_helper.rb:420:in
`select'
app/views/services/_abc.haml:34:in
`_run_template_47app47views47xyz47_abc46haml'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers/action_view_mods.rb:72:in
`call'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers/action_view_mods.rb:72:in
`form_for'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers.rb:336:in `call'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers.rb:336:in
`haml_bind_proc'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers/action_view_mods.rb:76:in
`form_for'
app/views/xyz/_abc.haml:1:in
`_run_template_47app47views47xyz47_abc46haml'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers/action_view_mods.rb:7:in
`render'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers/action_view_mods.rb:7:in
`render'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/haml/helpers/action_view_mods.rb:7:in
`render'
app/views/xyz/abc.haml:1:in `_run_template_47app47views47xyz47abc46haml'
/Library/Ruby/Gems/1.8/gems/haml-1.8.2/lib/sass/plugin/rails.rb:19:in
`process'

And in the controller/action I have

  @my_arr = %w(A B C)

Hopefully it makes it makes sense

What do you want the user to see in the drop-down? What do you want
stored in the xyz_id field of your @xyz object? I'm having a hard time
understanding the .collect call in there.

Does this run without error?

  f.select("xyz_id", @my_arr, {:prompt => "opt1"})

Cheers,

-Roy

Roy Pardee wrote:

What do you want the user to see in the drop-down? What do you want
stored in the xyz_id field of your @xyz object? I'm having a hard time
understanding the .collect call in there.

Does this run without error?

  f.select("xyz_id", @my_arr, {:prompt => "opt1"})

Cheers,

-Roy

if I do that I get the following error

undefined method `xyz_id' for #<Xyz:0x4304cfc

Luca Scaljery wrote:

Roy Pardee wrote:

What do you want the user to see in the drop-down? What do you want
stored in the xyz_id field of your @xyz object? I'm having a hard time
understanding the .collect call in there.

Does this run without error?

  f.select("xyz_id", @my_arr, {:prompt => "opt1"})

Cheers,

-Roy

if I do that I get the following error

undefined method `xyz_id' for #<Xyz:0x4304cfc

The problem is solved.
The problem occured due to the first 2 parameters. For example, this
doesn't work
select("abc", "abc_id" .....)

but this does
select("abc", "def_id" .... )

so now it works for f.select too!

thnx a lot for the help!!

Roy Pardee wrote:
> What do you want the user to see in the drop-down? What do you want
> stored in the xyz_id field of your @xyz object? I'm having a hard time
> understanding the .collect call in there.

> Does this run without error?

> f.select("xyz_id", @my_arr, {:prompt => "opt1"})

> Cheers,

> -Roy

if I do that I get the following error

undefined method `xyz_id' for #<Xyz:0x4304cfc

Then something is fundamentally scewed: why are you trying to edit
xyz_id if Xyz doesn't have xyz_id column? (also this would probably be
a lot easier to follow with 'real' class/column names)

Fred

Frederick Cheung wrote: