On Jul 22, 2011, at 3:25 AM, Bob Smith wrote:
The purpose of this button is to make it easy to change the way my app
stores names. The old way was with a first and last name for the whole
family, with the sex and birthdays of all family members later. Now
I'm trying to connect the names and birthdays, so any person in the
family that has their name listed can come in. The easiest way I've
come up with to move to the new way is with is a button that will copy
the name to whatever person has their radio button selected when the
button is pressed.
my radio buttons return the id number of a person record to a variable
- @households.hoh. Rails is handling this fine.
I'll need to add to the update method to copy the new name for the hoh
if the radio button was changed.
var hoh_chosen = $$('input.hoh:checked'); - when I try this, nothing
is selected, even with a radio button checked
I've tried surrounding the radio_button call with a <div class="hoh">
and <div id="hoh"> with no luck.
<%= radio_button "household", "hoh", person.id %>
To me, it looks like I'm either not setting the class name correctly,
or not looking for them right. Please help.
You need to add the class to the radio button itself. The HTML you
want to see in your browser looks like this:
<input type="radio" class="hoh" id="household_hoh_123"
name="household_hoh" value="123" />
To add the class to the radio_button call, just add it in the options
hash: :class => 'hoh'.
The reason that the JavaScript didn't give you back anything was
because it didn't match anything. But there's a larger issue here.
Where is the name located in the current page when you have that radio
button selected? Is it in the label to the radio button, or elsewhere
on the same page in a find-able location? Because the code I gave you
earlier would only access the value of the found radio button, in this
case 123. If it's in the label, then depending on whether it's before
or after the radio, you could access it with
elm.previous('label').innerHTML or elm.next('label').innerHTML
I can't help but think that it would be much easier to fix this in the
controller, copy the chosen person (as a found object through AR) into
the correct relationship and save.
Walter
Bob
On Jul 20, 9:44 am, Walter Lee Davis <[email protected]> wrote:
On Jul 20, 2011, at 1:07 AM, Bob Smith wrote:
I have a partial called people that has a radio button called hoh
for
head of household. I'm trying to have JavaScript look at each person
and find the one that has hoh=1. This record then has it's name
copied
to another field used for mailings. The web page has each record
from
the partial with a different id, household_person_1001,
household_person_1030, etc. I can't see a way to get all the person
records into a JavaScript array. Please help.
Parts of this seem pretty easy, but there's one thing you didn't
mention -- where are the names stored? Are these radio buttons set up
with value="Bob Smith" or are they value="1030" (the ID)?
If you apply a classname to these radio buttons, then it's easy to
grab all of them.
var hoh_chosen = $$('input.hoh:checked');
Now you have all of the checked radio buttons with class="hoh"
applied
to them. You iterate over them and find the nearby associated mailing
field:
hoh_chosen.each(function(elm){
// here I'm making another guess about your layout, that
// you've added a div around the common inputs for each person,
and
// you've applied the classname mailing_name to that text field
var mailing = elm.up('div').down('input.mailing_name');
if(mailing){
mailing.setValue(elm.getValue());
// and that only works if the value of the radio is what you
want
}
});
So lots of assumptions here, but it's really quite terse to do with
Prototype if the value is there to steal. But if your radio buttons
only have the ID, then I wouldn't set the mailing name here, but in
the controller after the form is submitted. There, you can look up
the
user by the ID chosen in your hoh radio, and it's all there for you.
Walter
Bob <[email protected]>
--
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-
[email protected].
To unsubscribe from this group, send email to
[email protected]
.
For more options, visit this group
athttp://groups.google.com/group/rubyonrails-talk?hl=en
.
--
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-
[email protected].
To unsubscribe from this group, send email to [email protected]
.
For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en
.
--
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 [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.