[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

select box question

Shanan Suding

8/7/2006 5:57:00 PM

Hi,

Yet another newbie here... I'm writing an appliction in Rails, and I've
Ajaxified my select boxes so they update dynamically. I used the
"observe_field" method to monitor changes to my select box. I find that
it's kind of erratic... it updates constantly and makes the selection
for me, based on where my mouse happens to be hovering when it does its
observation. Not very user friendly. I'd much rather the onChange
event, but I'm not sure exactly how to write the syntax for using the event.

Here's my code as it is now:

<select id="product[proddesc_pk]" name="product[proddesc_pk]">
<%= options_from_collection_for_select(
Product.find_all, "proddesc_pk", "prod_name"
) %>
</select></p>
<%= observe_field("product[proddesc_pk]",
:frequency =>0.25,
:update => "component_id_list",
:url => { :action => :fill_component_box},
:with => "'id='+value")
%>

How would I go about changing that code so that it updates based on an
onChange event, rather than the observation?

Any help would be greatly appreciated!

Thanks,
~ Shanan
2 Answers

Jano Svitok

8/7/2006 7:15:00 PM

0

Hi,

On 8/7/06, Shanan Suding <shanan187@ask.me> wrote:
> Hi,
>
> Yet another newbie here... I'm writing an appliction in Rails, and I've
> Ajaxified my select boxes so they update dynamically. I used the
> "observe_field" method to monitor changes to my select box. I find that
> it's kind of erratic... it updates constantly and makes the selection
> for me, based on where my mouse happens to be hovering when it does its
> observation. Not very user friendly. I'd much rather the onChange
> event, but I'm not sure exactly how to write the syntax for using the event.
>
> Here's my code as it is now:
>
> <select id="product[proddesc_pk]" name="product[proddesc_pk]">
> <%= options_from_collection_for_select(
> Product.find_all, "proddesc_pk", "prod_name"
> ) %>
> </select></p>
> <%= observe_field("product[proddesc_pk]",
> :frequency =>0.25,
> :update => "component_id_list",
> :url => { :action => :fill_component_box},
> :with => "'id='+value")
> %>
>
> How would I go about changing that code so that it updates based on an
> onChange event, rather than the observation?
>
> Any help would be greatly appreciated!
>
> Thanks,
> ~ Shanan

If you ask directly on rails forum (http://rubyonrails.com...)
it's possible that you'll receive an answer sooner, as there are more
folks who know ;-)

J.

Ezra Zygmuntowicz

8/7/2006 7:19:00 PM

0


On Aug 7, 2006, at 11:00 AM, Shanan Suding wrote:

> Hi,
>
> Yet another newbie here... I'm writing an appliction in Rails, and
> I've Ajaxified my select boxes so they update dynamically. I used
> the "observe_field" method to monitor changes to my select box. I
> find that it's kind of erratic... it updates constantly and makes
> the selection for me, based on where my mouse happens to be
> hovering when it does its observation. Not very user friendly.
> I'd much rather the onChange event, but I'm not sure exactly how to
> write the syntax for using the event.
>
> Here's my code as it is now:
>
> <select id="product[proddesc_pk]" name="product[proddesc_pk]">
> <%= options_from_collection_for_select(
> Product.find_all, "proddesc_pk", "prod_name"
> ) %>
> </select></p>
> <%= observe_field("product[proddesc_pk]",
> :frequency =>0.25,
> :update => "component_id_list",
> :url => { :action => :fill_component_box},
> :with => "'id='+value")
> %>
>
> How would I go about changing that code so that it updates based on
> an onChange event, rather than the observation?
>
> Any help would be greatly appreciated!
>
> Thanks,
> ~ Shanan
>


Here is how you can use the onchange event which is much nicer to
work with:

<%= select_tag( 'product[proddesc_pk]',
options_from_collection_for_select(

Product.find_all, "proddesc_pk", "prod_name") ,
:onchange => remote_function(:with =>
"'proddesc_pk ='+value",
:loading => "Element.show('loading-indicator1')",
:url => { :action => :
fill_component_box } ) %>


Doing it that way will put the value in params[: proddesc_pk] for
you . You can then respond with rjs to fill whatever you need to fill.

Cheers-
-EZra