Hey,
Sorry to ask this, but I’m really confused!
I have an app to handle guest lists. When a user wants to edit a list, I
create a one form with fields for each guest to make it easier to update
all in one go. Like this…
Guest 1 | [name] [company] [email]
Guest 2 | [name] [company] [email]
Guest 3 | [name] [company] [email]
SUBMIT
How do I update them all with one form submission?
Thanks
Hi Scott,
I’m going to haml here because rhtml sucks hard to code:
edit_multiple.haml:
= form_tag :controller => ‘guests’, :action => ‘update_multiple’
%table
= render :partial => ‘form’, :collection => @guests
_form.haml:
%tr
%td= input_tag “guest[#{guest.id}][name]”, guest.name
%td= input_tag “guest[#{guest.id}][company]”, guest.company
…
guests_controller.rb:
class GuestsController < ApplicationController
RESTful routes or:
verify :method => :post, :params => :guest, :only => :update_multiple
def update_multiple
guest_ids = params[:guest].keys
# better off by placing this in the model...
Guest.transaction do
guest_ids.each { |guest_id| Guest.update guest_id,
params[guest_id] }
end
end
end
Untested!
Regards
Florian
Hey,
Thanks for that. I found this code which seems to work:
def update_guestlist
@params[:guest].each do |g, guest|
guest_line = Guest.find(g)
guest_line.update_attributes(guest)
end
redirect_to :controller => ‘groups’
end
But is there anyway of ensuring that all of the data has been saved
before redirecting?
Thanks!
Ps - Thanks for the HAML tip. I have never heard of it but it seems to
take a lot of the work out of coding the view!
Scott H. wrote:
But is there anyway of ensuring that all of the data has been saved
before redirecting?
You will want to look into transactions. Since the rails wiki is down,
here is the cached Google page.
http://64.233.167.104/search?q=cache:rGXAaODr8moJ:wiki.rubyonrails.org/rails/show/HowToUseTransactions+rails+transactions&hl=en&ct=clnk&cd=1&gl=au