views:

124

answers:

1

I have a form around a list of items. I would like to check a radio button on the list and then, after clicking 'Submit', go to the 'Edit' page of the selected item.

The problem is that if I am writing something like

<%= form_tag edit_item_path %>

but Rails complains that I didn't provided a proper id, which in turn is being set on my radio buttons as the following:

<%= radio_button 'item', 'id', item.id %>

So - how would I send a form with a selected id to a given action?

+1  A: 

Doing it the way you describe would not work, since edit_item_path by default RESTful path definitions is a GET request. You are trying to make it a POST request. If you would like to stick to the RESTful way of doing things I would recommend simply looping through your items and provide links to edit, since you are planning to edit them one at a time anyways. Otherwise, you would have to define a new route if you would prefer doing things within the form with radio buttons. If you are, than you would add something like this to your config/routes.rb: (assuming you are using rails 2.3.x)


map.resources :items, :member =>{:edit_radio_form => :post}

Than your form would look like this: <%= form_tag edit_radio_form_item_path do |form| %> And it should work, but it not the right way of doing things for several reasons, the most anoying one of which is that you won't get a full URL on your edit page because you got there with a POST request, so if you refresh the page, your item id param will be gone and will produce an error.

fflyer05