I have an index page that shows each of my Customers, and each row in the display has an Update link which routes to my update method. That simply does a find on the Customer id from the link and sets an instance variable for the update view. My update view renders a partial (same one used in the new/create) and uses the following form: <form id="customerEditForm" method="get" controller ="Customer" action="edit"> I have code in the edit method to get all the updated fields and persist the changes. However, when I click on the submit button, the update action is executed, not the edit action. I thought it may be something to do with Rails automatic routing, so I renamed the update and edit actions to something very unusual ("edit" was renamed to "sally", and "update" was renamed to "frank") - same results - I wanted sally, but got frank. What am I doing wrong?
on 2009-04-14 20:47
on 2009-04-14 21:03
Usually the 'edit' action is the one that creates the page with the form, and the form calls the 'update' action. Usually there is no update view, the update action will usually redirect to the show page for that object or the index page for all objects of that type, or will re-render the edit page if the object couldn't be saved (because it fails validations, most commonly). So, your links should go to the 'edit' action, not to 'update'. The reason the form doesn't work is you're putting attributes in that it doesn't know about, like controller: form tags just take an 'action' attribute, which is the url to submit the form to. However, hard coding forms is bad. Use form_for to make your form, which should look like this: <%= form_for @your_object do |f|%> <% f.text_field :name %> ..etc <% end %> This will submit to the update action automatically
on 2009-04-15 07:09
Thank you for the help, Max - I am making progress, but still have an issue I cannot figure out. The reason I was hard coding the form is because when I used the form_for, I was getting unexpected results and errors (I cannot remember now what they were). But now that I go back to using form_for, I get an error like this: Unknown action No action responded to 3. Actions: create, edit, index, new, and update (In this case, 3 is the id of my Customer. If I select a different customer, I get that id in the error message.) Any ideas on that error? Thanks again, Steve On Apr 14, 1:03 pm, Max W. <firstname.lastname@example.org>