Roy Pardee
2008-Apr-29 21:49 UTC
serializing a non-form input for a link_to_remote call--how to do it?
Hey All,
I''m still working on my ''add people to this project''
feature for my /
projects/edit view. I''ve got a very nice AJAX search feature (thanks
to the kind help here) that allows users to generate a list of people
to potentially add to the project they''re editing. I''ve also
got an
AJAX ''add this found person to this project'' feature MOSTLY
working--
am writing for help on fixing the last issue w/that.
Model wise, I''ve got Project & Person in a many-to-many, and
ProjectPerson as the join model (so, Project
has_many :people, :through => :project_person). The join model
ProjectPerson has just one attribute of its own--role. My problem is
that I can''t figure out how to allow the user to edit this field
before adding the association between the Project and the Person.
Here''s the code I''m using to do the add. The AJAX search
feature
renders a partial that spits one of these out for each person meeting
the search:
<td><%= h p.person.nom %> </td>
<td><%= h p.person.organization.abbreviation %></td>
<td><%= select(p, :role, Person::ROLE_NAMES, :selected =>
p.person.typical_role) %> </td>
<td class=''list-actions''>
<%= link_to_remote(''Add'',
:url => {:controller =>
"project_people",
:action => "create",
:person_id => p.person,
:project_id => p.project,
:role => p.role #<--
Problem is here.
},
:update => ''roster'',
:method => ''post''
) %>
</td>
(''p'' here is an instance of ProjectPerson). The select()
helper gives
me a nice drop-down, and p.person and p.project are both getting
properly transmitted to the project_people.create action, but p.role
is always blank. I suspect this is b/c at the time this is transmuted
into HTML/javascript, p.role is blank, and there''s nothing in my
link_to_remote() call to tell the browser to go get whatever the user
put in the drop-down corresponding to the call to select(). If that''s
it, I don''t know how to do that (and when I go to ''view
source'' on the
page the AJAXy bits don''t show up, so I don''t know how to
investigate
that). Assuming anybody''s read this far, can you advise? (Do I need
to use remote_form_for maybe?)
Inicdentally, if I change the indicated argument to:
:role => p.person.typical_role
Then I do indeed get the contents of person.typical_role written to
project_person.role. But I really want to allow the user to override
that.
A thousand thanks in advance!
-Roy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
John Devine
2008-Apr-29 22:06 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
Roy, the way you have it set up now, the "role" in the url of the link_to_remote is getting generated on the server side and isn''t linked to the select list. Your instincts are right: you should be using remote_form_for here. On Apr 29, 4:49 pm, Roy Pardee <rpar...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Hey All, > > I''m still working on my ''add people to this project'' feature for my / > projects/edit view. I''ve got a very nice AJAX search feature (thanks > to the kind help here) that allows users to generate a list of people > to potentially add to the project they''re editing. I''ve also got an > AJAX ''add this found person to this project'' feature MOSTLY working-- > am writing for help on fixing the last issue w/that. > > Model wise, I''ve got Project & Person in a many-to-many, and > ProjectPerson as the join model (so, Project > has_many :people, :through => :project_person). The join model > ProjectPerson has just one attribute of its own--role. My problem is > that I can''t figure out how to allow the user to edit this field > before adding the association between the Project and the Person. > > Here''s the code I''m using to do the add. The AJAX search feature > renders a partial that spits one of these out for each person meeting > the search: > > <td><%= h p.person.nom %> </td> > <td><%= h p.person.organization.abbreviation %></td> > <td><%= select(p, :role, Person::ROLE_NAMES, :selected => > p.person.typical_role) %> </td> > <td class=''list-actions''> > <%= link_to_remote(''Add'', > :url => {:controller => "project_people", > :action => "create", > :person_id => p.person, > :project_id => p.project, > :role => p.role #<-- > Problem is here. > }, > :update => ''roster'', > :method => ''post'' > ) %> > </td> > > (''p'' here is an instance of ProjectPerson). The select() helper gives > me a nice drop-down, and p.person and p.project are both getting > properly transmitted to the project_people.create action, but p.role > is always blank. I suspect this is b/c at the time this is transmuted > into HTML/javascript, p.role is blank, and there''s nothing in my > link_to_remote() call to tell the browser to go get whatever the user > put in the drop-down corresponding to the call to select(). If that''s > it, I don''t know how to do that (and when I go to ''view source'' on the > page the AJAXy bits don''t show up, so I don''t know how to investigate > that). Assuming anybody''s read this far, can you advise? (Do I need > to use remote_form_for maybe?) > > Inicdentally, if I change the indicated argument to: > > :role => p.person.typical_role > > Then I do indeed get the contents of person.typical_role written to > project_person.role. But I really want to allow the user to override > that. > > A thousand thanks in advance! > > -Roy--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Roy Pardee
2008-Apr-30 12:41 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
Ah, okay then--more reading/experimenting for me... ;-) Thanks! -Roy On Apr 29, 3:06 pm, John Devine <johnjdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Roy, > > the way you have it set up now, the "role" in the url of the > link_to_remote is getting generated on the server side and isn''t > linked to the select list. > > Your instincts are right: you should be using remote_form_for here. > > On Apr 29, 4:49 pm, Roy Pardee <rpar...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Hey All, > > > I''m still working on my ''add people to this project'' feature for my / > > projects/edit view. I''ve got a very nice AJAX search feature (thanks > > to the kind help here) that allows users to generate a list of people > > to potentially add to the project they''re editing. I''ve also got an > > AJAX ''add this found person to this project'' feature MOSTLY working-- > > am writing for help on fixing the last issue w/that. > > > Model wise, I''ve got Project & Person in a many-to-many, and > > ProjectPerson as the join model (so, Project > > has_many :people, :through => :project_person). The join model > > ProjectPerson has just one attribute of its own--role. My problem is > > that I can''t figure out how to allow the user to edit this field > > before adding the association between the Project and the Person. > > > Here''s the code I''m using to do the add. The AJAX search feature > > renders a partial that spits one of these out for each person meeting > > the search: > > > <td><%= h p.person.nom %> </td> > > <td><%= h p.person.organization.abbreviation %></td> > > <td><%= select(p, :role, Person::ROLE_NAMES, :selected => > > p.person.typical_role) %> </td> > > <td class=''list-actions''> > > <%= link_to_remote(''Add'', > > :url => {:controller => "project_people", > > :action => "create", > > :person_id => p.person, > > :project_id => p.project, > > :role => p.role #<-- > > Problem is here. > > }, > > :update => ''roster'', > > :method => ''post'' > > ) %> > > </td> > > > (''p'' here is an instance of ProjectPerson). The select() helper gives > > me a nice drop-down, and p.person and p.project are both getting > > properly transmitted to the project_people.create action, but p.role > > is always blank. I suspect this is b/c at the time this is transmuted > > into HTML/javascript, p.role is blank, and there''s nothing in my > > link_to_remote() call to tell the browser to go get whatever the user > > put in the drop-down corresponding to the call to select(). If that''s > > it, I don''t know how to do that (and when I go to ''view source'' on the > > page the AJAXy bits don''t show up, so I don''t know how to investigate > > that). Assuming anybody''s read this far, can you advise? (Do I need > > to use remote_form_for maybe?) > > > Inicdentally, if I change the indicated argument to: > > > :role => p.person.typical_role > > > Then I do indeed get the contents of person.typical_role written to > > project_person.role. But I really want to allow the user to override > > that. > > > A thousand thanks in advance! > > > -Roy--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Drat--remote_form_for is not working as desired. I''ve replaced my
partial with this here:
<% remote_form_for(:project_person, p, :url => {:controller =>
"project_people", :action => "create"}) do |pp_form|
%>
<td><%= h p.person.nom %> </td>
<td><%= h p.person.organization.abbreviation %></td>
<td><%= pp_form.select(:role, Person::ROLE_NAMES, :selected =>
p.person.typical_role) %> </td>
<td><%= submit_tag ''Add'' %></td>
<% end %>
But when I click the submit button for this, the browser posts the
*outer* form--the one for editing the project. I tried making that
submit_tag call pp_form.submit_tag, but that just got me a (undefined
method `submit_tag'' for #<ActionView::Helpers::FormBuilder:
0x4987c3c>).
Can you not nest a remote form inside a regular form_for block?
Thanks!
-Roy
On Apr 29, 3:06 pm, John Devine
<johnjdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> Roy,
>
> the way you have it set up now, the "role" in the url of the
> link_to_remote is getting generated on the server side and isn''t
> linked to the select list.
>
> Your instincts are right: you should be using remote_form_for here.
>
> On Apr 29, 4:49 pm, Roy Pardee
<rpar...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > Hey All,
>
> > I''m still working on my ''add people to this
project'' feature for my /
> > projects/edit view. I''ve got a very nice AJAX search feature
(thanks
> > to the kind help here) that allows users to generate a list of people
> > to potentially add to the project they''re editing.
I''ve also got an
> > AJAX ''add this found person to this project'' feature
MOSTLY working--
> > am writing for help on fixing the last issue w/that.
>
> > Model wise, I''ve got Project & Person in a many-to-many,
and
> > ProjectPerson as the join model (so, Project
> > has_many :people, :through => :project_person). The join model
> > ProjectPerson has just one attribute of its own--role. My problem is
> > that I can''t figure out how to allow the user to edit this
field
> > before adding the association between the Project and the Person.
>
> > Here''s the code I''m using to do the add. The AJAX
search feature
> > renders a partial that spits one of these out for each person meeting
> > the search:
>
> > <td><%= h p.person.nom %> </td>
> > <td><%= h p.person.organization.abbreviation
%></td>
> > <td><%= select(p, :role, Person::ROLE_NAMES,
:selected =>
> > p.person.typical_role) %> </td>
> > <td class=''list-actions''>
> > <%= link_to_remote(''Add'',
> > :url => {:controller =>
"project_people",
> > :action =>
"create",
> > :person_id => p.person,
> > :project_id => p.project,
> > :role => p.role #<--
> > Problem is here.
> > },
> > :update => ''roster'',
> > :method => ''post''
> > ) %>
> > </td>
>
> > (''p'' here is an instance of ProjectPerson). The
select() helper gives
> > me a nice drop-down, and p.person and p.project are both getting
> > properly transmitted to the project_people.create action, but p.role
> > is always blank. I suspect this is b/c at the time this is transmuted
> > into HTML/javascript, p.role is blank, and there''s nothing in
my
> > link_to_remote() call to tell the browser to go get whatever the user
> > put in the drop-down corresponding to the call to select(). If
that''s
> > it, I don''t know how to do that (and when I go to
''view source'' on the
> > page the AJAXy bits don''t show up, so I don''t know
how to investigate
> > that). Assuming anybody''s read this far, can you advise?
(Do I need
> > to use remote_form_for maybe?)
>
> > Inicdentally, if I change the indicated argument to:
>
> > :role => p.person.typical_role
>
> > Then I do indeed get the contents of person.typical_role written to
> > project_person.role. But I really want to allow the user to override
> > that.
>
> > A thousand thanks in advance!
>
> > -Roy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Apr-30 18:32 UTC
Re: remote_form_for submit button submits the whole form
On 30 Apr 2008, at 19:21, Roy Pardee wrote:> > But when I click the submit button for this, the browser posts the > *outer* form--the one for editing the project. I tried making that > submit_tag call pp_form.submit_tag, but that just got me a (undefined > method `submit_tag'' for #<ActionView::Helpers::FormBuilder: > 0x4987c3c>). > > Can you not nest a remote form inside a regular form_for block? >Nesting forms is not legal html. Fred> Thanks! > > -Roy > > On Apr 29, 3:06 pm, John Devine <johnjdev...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> Roy, >> >> the way you have it set up now, the "role" in the url of the >> link_to_remote is getting generated on the server side and isn''t >> linked to the select list. >> >> Your instincts are right: you should be using remote_form_for here. >> >> On Apr 29, 4:49 pm, Roy Pardee <rpar...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: >> >>> Hey All, >> >>> I''m still working on my ''add people to this project'' feature for >>> my / >>> projects/edit view. I''ve got a very nice AJAX search feature >>> (thanks >>> to the kind help here) that allows users to generate a list of >>> people >>> to potentially add to the project they''re editing. I''ve also got an >>> AJAX ''add this found person to this project'' feature MOSTLY >>> working-- >>> am writing for help on fixing the last issue w/that. >> >>> Model wise, I''ve got Project & Person in a many-to-many, and >>> ProjectPerson as the join model (so, Project >>> has_many :people, :through => :project_person). The join model >>> ProjectPerson has just one attribute of its own--role. My problem >>> is >>> that I can''t figure out how to allow the user to edit this field >>> before adding the association between the Project and the Person. >> >>> Here''s the code I''m using to do the add. The AJAX search feature >>> renders a partial that spits one of these out for each person >>> meeting >>> the search: >> >>> <td><%= h p.person.nom %> </td> >>> <td><%= h p.person.organization.abbreviation %></td> >>> <td><%= select(p, :role, Person::ROLE_NAMES, :selected => >>> p.person.typical_role) %> </td> >>> <td class=''list-actions''> >>> <%= link_to_remote(''Add'', >>> :url => {:controller => "project_people", >>> :action => "create", >>> :person_id => p.person, >>> :project_id => p.project, >>> :role => p.role #<-- >>> Problem is here. >>> }, >>> :update => ''roster'', >>> :method => ''post'' >>> ) %> >>> </td> >> >>> (''p'' here is an instance of ProjectPerson). The select() helper >>> gives >>> me a nice drop-down, and p.person and p.project are both getting >>> properly transmitted to the project_people.create action, but p.role >>> is always blank. I suspect this is b/c at the time this is >>> transmuted >>> into HTML/javascript, p.role is blank, and there''s nothing in my >>> link_to_remote() call to tell the browser to go get whatever the >>> user >>> put in the drop-down corresponding to the call to select(). If >>> that''s >>> it, I don''t know how to do that (and when I go to ''view source'' on >>> the >>> page the AJAXy bits don''t show up, so I don''t know how to >>> investigate >>> that). Assuming anybody''s read this far, can you advise? (Do I >>> need >>> to use remote_form_for maybe?) >> >>> Inicdentally, if I change the indicated argument to: >> >>> :role => p.person.typical_role >> >>> Then I do indeed get the contents of person.typical_role written to >>> project_person.role. But I really want to allow the user to >>> override >>> that. >> >>> A thousand thanks in advance! >> >>> -Roy > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Apr-30 18:39 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
On 29 Apr 2008, at 22:49, Roy Pardee wrote:> > <td><%= h p.person.nom %> </td> > <td><%= h p.person.organization.abbreviation %></td> > <td><%= select(p, :role, Person::ROLE_NAMES, :selected => > p.person.typical_role) %> </td> > <td class=''list-actions''> > <%= link_to_remote(''Add'', > :url => {:controller => "project_people", > :action => "create", > :person_id => p.person, > :project_id => p.project, > :role => p.role #<--<%= link_to_remote(''Add'', :url => {:controller => "project_people", :action => "create", :person_id => p.person, :project_id => p.project}, :with => "''role=''+encodeURIComponent($F(''project_role''))" (change project_role to the id of your select tag) Fred> > Problem is here. > }, > :update => ''roster'', > :method => ''post'' > ) %> > </td> > > (''p'' here is an instance of ProjectPerson). The select() helper gives > me a nice drop-down, and p.person and p.project are both getting > properly transmitted to the project_people.create action, but p.role > is always blank. I suspect this is b/c at the time this is transmuted > into HTML/javascript, p.role is blank, and there''s nothing in my > link_to_remote() call to tell the browser to go get whatever the user > put in the drop-down corresponding to the call to select(). If that''s > it, I don''t know how to do that (and when I go to ''view source'' on the > page the AJAXy bits don''t show up, so I don''t know how to investigate > that). Assuming anybody''s read this far, can you advise? (Do I need > to use remote_form_for maybe?) > > Inicdentally, if I change the indicated argument to: > > :role => p.person.typical_role > > Then I do indeed get the contents of person.typical_role written to > project_person.role. But I really want to allow the user to override > that. > > A thousand thanks in advance! > > -Roy > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Roy Pardee
2008-Apr-30 19:28 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
On Apr 30, 11:39 am, Frederick Cheung <frederick.che...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> On 29 Apr 2008, at 22:49, Roy Pardee wrote: > > > > > <td><%= h p.person.nom %> </td> > > <td><%= h p.person.organization.abbreviation %></td> > > <td><%= select(p, :role, Person::ROLE_NAMES, :selected => > > p.person.typical_role) %> </td> > > <td class=''list-actions''> > > <%= link_to_remote(''Add'', > > :url => {:controller => "project_people", > > :action => "create", > > :person_id => p.person, > > :project_id => p.project, > > :role => p.role #<-- > > <%= link_to_remote(''Add'', > :url => {:controller => "project_people", > :action => "create", > :person_id => p.person, > :project_id => p.project}, > :with => "''role=''+encodeURIComponent($F(''project_role''))" > > (change project_role to the id of your select tag)Thanks Fred! The problem is that I don''t know how to control what that id winds up being. I tried throwing an :id argument on my call to select, like so: select(p, :role, Person::ROLE_NAMES, :selected => p.person.typical_role, :id=>"p_role[]") (Figured I''d need the empty brackets b/c there are going to be a series of these--one per found person). But even still I get IDs like "__ProjectPerson:0x4a43734_role". BTW--do I take it that, not only is nesting <form> elements verboten HTML, but having a series of separate form elements is also no good? I tried taking my remote_form_for stuff entirely outside the main form, but it seemed to have no effect... Thanks! -Roy --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Apr-30 19:39 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
On 30 Apr 2008, at 20:28, Roy Pardee wrote:>> >> <%= link_to_remote(''Add'', >> :url => {:controller => "project_people", >> :action => "create", >> :person_id => p.person, >> :project_id => p.project}, >> :with => >> "''role=''+encodeURIComponent($F(''project_role''))" >> >> (change project_role to the id of your select tag) > > Thanks Fred! The problem is that I don''t know how to control what > that id winds up being. I tried throwing an :id argument on my call > to select, like so: > > select(p, :role, Person::ROLE_NAMES, :selected => > p.person.typical_role, :id=>"p_role[]") > > select(p, :role, Person::ROLE_NAMES, {:selected => > p.person.typical_role}, :id=>"foo")> (Figured I''d need the empty brackets b/c there are going to be a > series of these--one per found person). But even still I get IDs like > "__ProjectPerson:0x4a43734_role".dom ids aren''t allowed to contain[]> > BTW--do I take it that, not only is nesting <form> elements verboten > HTML, but having a series of separate form elements is also no good? > I tried taking my remote_form_for stuff entirely outside the main > form, but it seemed to have no effect...Not sure what you mean by that. --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Roy Pardee
2008-Apr-30 20:00 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
> > select(p, :role, Person::ROLE_NAMES, {:selected => > > p.person.typical_role}, :id=>"foo") > > (Figured I''d need the empty brackets b/c there are going to be a > > series of these--one per found person). But even still I get IDs like > > "__ProjectPerson:0x4a43734_role". > > dom ids aren''t allowed to contain[]Taking those out does not seem to affect the id of the select input-- it''s still unpredictable objectid goo. Can you tell me how to control what those IDs are set as? Or advise on how I can otherwise get a handle on the value of the select input so I can stuff it in the :with argument of link_to?> > BTW--do I take it that, not only is nesting <form> elements verboten > > HTML, but having a series of separate form elements is also no good? > > I tried taking my remote_form_for stuff entirely outside the main > > form, but it seemed to have no effect... > > Not sure what you mean by that.Earlier in the thread I asked if it was verboten to have a remote_form_for nested w/in a form_for. You replied saying (I thought) that it was illegal to have nested <form> elements per the HTML standard. So I''m asking if it''s also illegal to have multiple <form> elements in general? Would <form></form><form></form> also be illegal? If not, conceivably I could move my remote_form_for block outside the form_for block and have a hope of it working. (My experiment with doing that did not work.) Thanks! -Roy --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-Apr-30 20:59 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
On 30 Apr 2008, at 21:00, Roy Pardee wrote:> > >>> select(p, :role, Person::ROLE_NAMES, {:selected => >>> p.person.typical_role}, :id=>"foo") >>> (Figured I''d need the empty brackets b/c there are going to be a >>> series of these--one per found person). But even still I get IDs >>> like >>> "__ProjectPerson:0x4a43734_role". >> >> dom ids aren''t allowed to contain[] > > Taking those out does not seem to affect the id of the select input-- > it''s still unpredictable objectid goo. Can you tell me how to control > what those IDs are set as? Or advise on how I can otherwise get a > handle on the value of the select input so I can stuff it in the :with > argument of link_to? >I rather mangled my previous mail: to set the id of the select tag, you need select(p, :role, Person::ROLE_NAMES, {:selected => p.person.typical_role}, :id=>"foo") (note the extra {})> >>> BTW--do I take it that, not only is nesting <form> elements verboten >>> HTML, but having a series of separate form elements is also no good? >>> I tried taking my remote_form_for stuff entirely outside the main >>> form, but it seemed to have no effect... >> >> Not sure what you mean by that. > > Earlier in the thread I asked if it was verboten to have a > remote_form_for nested w/in a form_for. You replied saying (I > thought) that it was illegal to have nested <form> elements per the > HTML standard. So I''m asking if it''s also illegal to have multiple > <form> elements in general? Would <form></form><form></form> also be > illegal? If not, conceivably I could move my remote_form_for block > outside the form_for block and have a hope of it working. (My > experiment with doing that did not work.)You can have as many forms as you want. Fred --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Pardee, Roy
2008-May-01 01:44 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
> I rather mangled my previous mail: to set the id of the select tag,you need> > select(p, :role, Person::ROLE_NAMES, {:selected =>p.person.typical_role}, :id=>"foo") (note the extra {}) Kick-ass--thanks! I''m finding it tough to know which args should get batched up together into explicit hashes. I suppose that''s a part of the learning curve here... Now since this call is part of a loop through a collection, I had to add a counter var to unique-ify the ids: <% row_num = 0 %> <% for p in ppl %> <% row_num += 1 %> <% role_id = "p_role_#{row_num.to_s}" %> <tr class = "<%= cycle(''line-even'', ''line-odd'') %>"> <td><%= h p.person.nom %> </td> <td><%= h p.person.organization.abbreviation %></td> <td><%= select(p, :role, Person::ROLE_NAMES, {:selected => p.person.typical_role}, :id => role_id) %> </td> <td class=''list-actions''><%= link_to_remote(''Add'', :url => {:controller => "project_people", :action => "create", :person_id => p.person, :project_id => p.project, :role => p.role}, :update => ''roster'', :method => ''post'', :with => "''role=''+encodeURIComponent($F(''#{role_id}''))" ) %> </td> </tr> I''m fine w/that, tho it does feel a bit ghetto to me. Is there a better way? Thanks so much for taking the time! -Roy --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Frederick Cheung
2008-May-01 02:36 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
On 1 May 2008, at 02:44, Pardee, Roy wrote:> > >> I rather mangled my previous mail: to set the id of the select tag, > you need >> >> select(p, :role, Person::ROLE_NAMES, {:selected => > p.person.typical_role}, :id=>"foo") (note the extra {}) > > Kick-ass--thanks! I''m finding it tough to know which args should get > batched up together into explicit hashes. I suppose that''s a part of > the learning curve here...Basically you can only omit the hash braces when it''s the last argument (how would ruby know where to draw the line).> > > Now since this call is part of a loop through a collection, I had to > add > a counter var to unique-ify the ids: > > <% row_num = 0 %> > <% for p in ppl %> > <% row_num += 1 %> > <% role_id = "p_role_#{row_num.to_s}" %> > <tr class = "<%= cycle(''line-even'', ''line-odd'') %>"> > <td><%= h p.person.nom %> </td> > <td><%= h p.person.organization.abbreviation > %></td> > <td><%= select(p, :role, Person::ROLE_NAMES, > {:selected => p.person.typical_role}, :id => role_id) %> </td> > <td class=''list-actions''><%= link_to_remote(''Add'', > :url => {:controller => "project_people", > :action => "create", > :person_id => p.person, > :project_id => p.project, > :role => p.role}, > :update => ''roster'', > :method => ''post'', > :with => > "''role=''+encodeURIComponent($F(''#{role_id}''))" > ) %> </td> > > </tr> > > > I''m fine w/that, tho it does feel a bit ghetto to me. Is there a > better > way? >Well I''d probably use each_with_index rather than the for loop, but that''s largely a question of taste. It probably looks neater when it''s not line wrapped to fit in an email. Fred> Thanks so much for taking the time! > > -Roy > > > > > >--~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
Bill Walton
2008-May-01 11:47 UTC
Re: remote_form_for submit button submits the whole form
Hi Roy, Roy Pardee wrote:> > Can you not nest a remote form inside a regular form_for block?No, you cannot nest forms. That''s what the W3C spec says. You can put multiple forms on a page. And you can make them _appear_, visually, to be nested. But you can''t have a form tag within a form tag. HTH, Bill --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---
AndyV
2008-May-01 12:59 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
@Roy,
It appears that you''re using the row_num (or index of each_with_index)
to artificially create a unique dom id so that you can submit that dom
id with the link_to_remote. Is that accurate? If so, I''d suggest
that you use the person.id rather than creating an artificial one.
Specifically, your ''role_id'' could be
"p_role_#{p.id}". Assuming that
your ppl collection returns each person only once then you''ve got
unique dom_ids every time.
Even better, if you''re in Rails 2.x, you can use the dom_id helper
method to create the id for you. You''d call it like this:
dom_id(p, :select_role_for) => ''select_role_for_person_12''
The first parameter is a model object. The helper uses the class name
and id to form the base name in the dom id (here, person_12). The
optional symbol after that is used as a prefix, giving you a nice,
expressive id for your select element. Put those together and you
could have something like this:
<% ppl.each do |employee| %>
<tr class="<%= cycle(''line-even'',
''line-odd'') %>">
<td><%= h employee.person.nom %></td>
<td><%= h employee.person.organization.abbreviation %>
<td><%= select(employee, :role, Person::ROLE_NAMES,
{:selected=>employee.person.typical_role}, :id=>dom_id(employee,
:role_for)
%></td>
<td class=''list-actions''>
<%= link_to_remote
''Add'', :url=>project_people_path(employee.project,
:person_id=>employee.person), :method=>:post,
:update=>''roster'', :with
=> "''role='' +
encodeURIComponent($F(''#{dom_id(employee, :role_for)}''))"
) %>
</td>
</tr>
<% end %>
HTH,
AndyV
On Apr 30, 9:44 pm, "Pardee, Roy"
<parde...-go57ItdSaco@public.gmane.org> wrote:> > I rather mangled my previous mail: to set the id of the select tag,
> you need
>
> > select(p, :role, Person::ROLE_NAMES, {:selected =>
>
> p.person.typical_role}, :id=>"foo") (note the extra {})
>
> Kick-ass--thanks! I''m finding it tough to know which args should
get
> batched up together into explicit hashes. I suppose that''s a part
of
> the learning curve here...
>
> Now since this call is part of a loop through a collection, I had to add
> a counter var to unique-ify the ids:
>
> <% row_num = 0 %>
> <% for p in ppl %>
> <% row_num += 1 %>
> <% role_id = "p_role_#{row_num.to_s}" %>
> <tr class = "<%= cycle(''line-even'',
''line-odd'') %>">
> <td><%= h p.person.nom %> </td>
> <td><%= h
p.person.organization.abbreviation
> %></td>
> <td><%= select(p, :role,
Person::ROLE_NAMES,
> {:selected => p.person.typical_role}, :id => role_id) %>
</td>
> <td class=''list-actions''><%=
link_to_remote(''Add'',
> :url => {:controller =>
"project_people",
> :action => "create",
> :person_id => p.person,
> :project_id => p.project,
> :role => p.role},
> :update => ''roster'',
> :method => ''post'',
> :with =>
>
"''role=''+encodeURIComponent($F(''#{role_id}''))"
> ) %> </td>
>
> </tr>
>
> I''m fine w/that, tho it does feel a bit ghetto to me. Is there a
better
> way?
>
> Thanks so much for taking the time!
>
> -Roy
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups
"Ruby on Rails: Talk" group.
To post to this group, send email to
rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk-unsubscribe-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en
-~----------~----~----~----~------~----~------~--~---
Pardee, Roy
2008-May-01 15:47 UTC
Re: serializing a non-form input for a link_to_remote call--how to do it?
-----Original Message----- From: rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org [mailto:rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org] On Behalf Of AndyV Sent: Thursday, May 01, 2008 5:59 AM To: Ruby on Rails: Talk Subject: [Rails] Re: serializing a non-form input for a link_to_remote call--how to do it?> @Roy, > > It appears that you''re using the row_num (or index of > each_with_index) to artificially create a unique dom id so > that you can submit that dom id with the link_to_remote. Is > that accurate? If so, I''d suggest that you use the > person.id rather than creating an artificial one. > > Specifically, your ''role_id'' could be "p_role_#{p.id}". > Assuming that your ppl collection returns each person only > once then you''ve got unique dom_ids every time.Ah--you''re right! I''m actually iterating through an array of PeoplePerson objects, but each one has a Person on it, and each should be unique. So I can just use p.person.id. Excellent--that''s much better. Thanks! -Roy --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Ruby on Rails: Talk" group. To post to this group, send email to rubyonrails-talk-/JYPxA39Uh5TLH3MbocFFw@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk-unsubscribe@googlegroups.com For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en -~----------~----~----~----~------~----~------~--~---