0

I've just had Submitting multiple forms in Rails answered which led to another problem. In my form I have the following (there's quite a bit more):

= hidden_field_tag :event_id, :value => @event.id

.control-group
  = label_tag :title
  .controls
    = select(:registration, "registrations[][title]", Registration::TITLE)

and the last line returns:

"registrations"=>[{"title"=>{"registration"=>"Mr"},

as opposed to the expected:

"title"=>"Mr"

I've tried:

= select(:registration, "registrations[][title]", Registration::TITLE)

which returns:

undefined method `registrations[][title]' for #

and also tried:

= select("registrations[][title]", Registration::TITLE)

which returns:

wrong number of arguments (2 for 3)

Look at the parameters below, event(_id) is only there once then the :title oddness starts, any idea what the problem may be?

{"utf8"=>"✓",
 "authenticity_token"=>"BQXm5fngW27z/3Wxy9qEzu6D8/g9YQIfBL+mFKVplgE=",
 "event_id"=>"7",
 "registrations"=>[{"title"=>{"registration"=>"Mr"},
 "first_name"=>"Name1",
 "last_name"=>"Surname1",
 "company_name"=>"Company1",
 "designation"=>"Designation1",
 "landline"=>"Landline1",
 "cell"=>"Cell1",
 "email"=>"address1@example.com",
 "member"=>{"registration"=>"No"},
 "dietary"=>{"registration"=>"None"},
 "specify"=>"None"},
 {"first_name"=>"Name2",
 "last_name"=>"Surname2",
 "company_name"=>"Company2",
 "designation"=>"Designation2",
 "landline"=>"Landline2",
 "cell"=>"Cell2",
 "email"=>"address2@example.com",
 "member"=>{"registration"=>"No"},
 "dietary"=>{"registration"=>"None"},
 "specify"=>"None",
 "title"=>{"registration"=>"Mr"}},
 {"first_name"=>"Name3",
 "last_name"=>"Surname3",
 "company_name"=>"Company3",
 "designation"=>"Designation3",
 "landline"=>"Landline3",
 "cell"=>"Cell3",
 "email"=>"address3@example.com",
 "member"=>{"registration"=>"No"},
 "dietary"=>{"registration"=>"None"},
 "specify"=>"None"}],
 "commit"=>"Submit registrations"}

Please not that :dietary and :member are formated in the same way as :title. Thanks in advance for your assistance!

EDIT

So submitting to the hash via a text_field_tag is a simple is:

= text_field_tag "registrations[][first_name]"

But the problem comes in with my hidden_field_tag and select_tag.

It's adding bad values, for example:

"title"=>{"registrations"=>"Mr"}

and basically it seems I need to find a better way to add those values into the hash. I'll continue trying to find a solution and will post it here unless someone beats me to it.

Community
  • 1
  • 1
user1224344
  • 129
  • 2
  • 11

1 Answers1

0

Unless i'm reading it wrong, your first two select calls are the same. Have you tried = select(:registrations, "title", Registration::TITLE)? If you look at the documentation of the method in api.rubyonrails.org, it will state that the first value is the object, second is the property. That would be registrations => { :title => "Value" }, in the parameters. If you just want :title => "Value", then you need the select_tag method.

agmcleod
  • 13,321
  • 13
  • 57
  • 96
  • Thanks for getting back to me, I've tried what you suggested, but still no luck. The problem seems to be the fact that I'm passing my values into a hash. See edit to main post. – user1224344 Jul 03 '12 at 06:04