Forum: Ruby on Rails submitting forms help

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
F10f95926f620318a71c102f207649b7?d=identicon&s=25 Manish Shah (Guest)
on 2006-04-09 05:42
(Received via mailing list)
I cant seem to figure this problem out and i was hoping someone could
help
me out.

I have a page with a list of forms.  I would like the user to be able to
submit each form individually, or submit them all at once, to a
different
action (bascially, one that will do batch processing of all the forms).

Is this possble?  Please help.
Eea3feaacbe44706164289d068d94828?d=identicon&s=25 Peter Michaux (Guest)
on 2006-04-09 06:07
(Received via mailing list)
I think you can only submit one form at a time. But there is a solution.

Make your whole page one big form that submits to a particular action.

For each "sub-form" make a button with a unique name. <button
name="little_form_1"> tags or <input type=button name="little_form_1>.
You don't use submit tags for this.

For the entire form make a button with a unique name. <button
name="all_forms">

In the action that will process the form you will make a if else
statement

if params[:all_forms]

elseif params[:little_form_1]

end

The above syntax may be a bit suspect but I've used something like
this before. I think it is nice an clean. I've found that it is best
if forms submit their data back to the same action that created the
form. This makes life easier. It also helps a lot with validation and
redirects.

Peter
F10f95926f620318a71c102f207649b7?d=identicon&s=25 Manish Shah (Guest)
on 2006-04-10 01:17
(Received via mailing list)
i had a different idea that i'm trying to get right.  Each sub form is
using
form_remote_tag to make an ajax call onsubmit. What i did was create a
javascript function that loops through all the forms and calls
document.forms[i].submit()

However, its not acting as if the person clicked the submit button for
each
form.  I have :loading and :complete attributes set for each subform
that
shows the user that the form was submitted and the server result, i'd
like
each of these to be triggered when calling document.forms[i].submit()
which
i thought it would since they are triggered with the onsubmit event.

Am i missing something?  Please help.

Thanks in advance.
Eea3feaacbe44706164289d068d94828?d=identicon&s=25 Peter Michaux (Guest)
on 2006-04-10 04:59
(Received via mailing list)
On 4/9/06, Manish Shah <mnshah@gmail.com> wrote:
> i had a different idea that i'm trying to get right.  Each sub form is using
> form_remote_tag to make an ajax call onsubmit. What i did was create a
> javascript function that loops through all the forms and calls
> document.forms [i].submit()

That is an interesting idea but I'd stay away from it since a simpler,
bug-free solution exists. JavaScript is hard work.

>From what you've written it is possible that you have nested <form>
tags? Is this true?

> However, its not acting as if the person clicked the submit button for each
> form.  I have :loading and :complete attributes set for each subform that
> shows the user that the form was submitted and the server result, i'd like
> each of these to be triggered when calling document.forms[i].submit() which
> i thought it would since they are triggered with the onsubmit event.
>

> document.forms[i].submit()

Instead of this, what you really want to do is simulate a click event
on each submit button. Or something. Or you want to call with
JavaScript the same function you have in the onclick attribute of each
form submit. Things are getting complicated!

Good luck.

Peter
C64e63b70be7dfed8b0742540b8b27e5?d=identicon&s=25 Mark Reginald James (Guest)
on 2006-04-10 14:42
(Received via mailing list)
Manish Shah wrote:
> i had a different idea that i'm trying to get right.  Each sub form is
> using form_remote_tag to make an ajax call onsubmit. What i did was
> create a javascript function that loops through all the forms and calls
> document.forms [i].submit()

If you're going to post using AJAX then perhaps you can use
submit_to_remote and its :submit option. This allows you to
specify a div element that encloses the named elements that
you want posted for each submit button.  No need for any forms.

--
We develop, watch us RoR, in numbers too big to ignore.
This topic is locked and can not be replied to.