lunaclaire
2010-Mar-04 05:12 UTC
jQuery conversion - how to replace :onchange => remote_function() call?
II''m switching to jQuery and wondering how do I pull the onchange:
stuff out of the following for a select and put it into a handler?
here''s what I have in my view now:
<%= select_tag :selected_email,
options_from_collection_for_select(update_request.contact.emails,
''id'', ''value'',
update_request.contact.primary_email_id),
:onchange => remote_function(:url => {:action
=> :set_request_email, :id => update_request.id}, :with =>
"''value='' +
value"),
:id => "request_email_#{update_request.id}" %>
I have this in application.js:
jQuery(document).ready(function() {
// handle change events from update_requests listing
$("select[id^=''request_email'']").change(function(event)
{
var selected = $("#" + event.target.id + "
option:selected");
alert(''You chose '' + selected.val());
});
});
but, how would I extract the options/params and post them to
the :set_request_email action from the JS?
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
To unsubscribe from this group, send email to
rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
For more options, visit this group at
http://groups.google.com/group/rubyonrails-talk?hl=en.
Amar Daxini
2010-Mar-04 05:34 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
lunaclaire wrote:> II''m switching to jQuery and wondering how do I pull the onchange: > stuff out of the following for a select and put it into a handler? > > here''s what I have in my view now: > > <%= select_tag :selected_email, > options_from_collection_for_select(update_request.contact.emails, > ''id'', ''value'', update_request.contact.primary_email_id), > :onchange => remote_function(:url => {:action > => :set_request_email, :id => update_request.id}, :with => "''value='' + > value"), > :id => "request_email_#{update_request.id}" %>$("#your_select_id").live("change",function(event){ //It return whatever value is selected value_of_select =$("#your_select_id").val(); //Now call ajax request on change //You can refer code http://railstech.com/?p=58 }); Refer Code http://railstech.com/?p=58 -- Posted via http://www.ruby-forum.com/. -- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org To unsubscribe from this group, send email to rubyonrails-talk+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.
lunaclaire
2010-Mar-04 07:31 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
Thx, Amar. I should have been more clear... My need for answers stems from my ignorance of how to access values known in a view to JS and the jquery code so that they can be accessed there or posted back to the server thru ajax. curr the remote_function() call has the url params which are known in my view (the action to post to and the obj ID of interest that the selection is for), but I cant figure out how to generate that url in JS/jQuery I think I''ve done this kind of thing before, but I''m missing it at the moment. Can someone show me? On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:> lunaclaire wrote: > > II''m switching to jQuery and wondering how do I pull the onchange: > > stuff out of the following for a select and put it into a handler? > > > here''s what I have in my view now: > > > <%= select_tag :selected_email, > > options_from_collection_for_select(update_request.contact.emails, > > ''id'', ''value'', update_request.contact.primary_email_id), > > :onchange => remote_function(:url => {:action > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > value"), > > :id => "request_email_#{update_request.id}" %> > > $("#your_select_id").live("change",function(event){ > //It return whatever value is selected > value_of_select =$("#your_select_id").val(); > //Now call ajax request on change > //You can refer codehttp://railstech.com/?p=58}); > > Refer Codehttp://railstech.com/?p=58 > -- > Posted viahttp://www.ruby-forum.com/.-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
Peter
2010-Mar-04 15:17 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
Easiest thing to do is to make a simple remote_form_for/ form_remote_tag and look at the jQuery it produces in its onsubmit function. However, I''m a little confused, why not just put your select box inside a form tag that posts to your URL and let rails helpers + jrails do the parameter scrapping and submission for you? On Mar 4, 1:31 am, lunaclaire <szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:> Thx, Amar. > > I should have been more clear... My need for answers stems from my > ignorance of how to access values known in a view to JS and the jquery > code so that they can be accessed there or posted back to the server > thru ajax. > > curr the remote_function() call has the url params which are known in > my view (the action to post to and the obj ID of interest that the > selection is for), but I cant figure out how to generate that url in > JS/jQuery > > I think I''ve done this kind of thing before, but I''m missing it at the > moment. > > Can someone show me? > > On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > lunaclaire wrote: > > > II''m switching to jQuery and wondering how do I pull the onchange: > > > stuff out of the following for a select and put it into a handler? > > > > here''s what I have in my view now: > > > > <%= select_tag :selected_email, > > > options_from_collection_for_select(update_request.contact.emails, > > > ''id'', ''value'', update_request.contact.primary_email_id), > > > :onchange => remote_function(:url => {:action > > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > > value"), > > > :id => "request_email_#{update_request.id}" %> > > > $("#your_select_id").live("change",function(event){ > > //It return whatever value is selected > > value_of_select =$("#your_select_id").val(); > > //Now call ajax request on change > > //You can refer codehttp://railstech.com/?p=58}); > > > Refer Codehttp://railstech.com/?p=58 > > -- > > Posted viahttp://www.ruby-forum.com/.-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-04 17:13 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
I did take the first steps in switching to jQuery by using jRails, but now I''m trying to "do the right thing" and start moving this app away from the obtrusive JS and those helpers. I''ve been using remote_function for a long time, but using the conversion here as a model for how to move behaviors to the application.js and away from the views themselves. So, if someone can answer the question 2 posts back about how to generate/pass the params that should help me "get it" as far as how to set those behaviors up. The conceptual prob I''m having is that the way I''ve been doing it seems to have a tighter coupling betw the obj being displayed and the need in some cases (like this one) to pass info about that obj back to the controller. It seems that by having the jQuery code "waiting" for an event (onChange here), it''s decoupled from the view and, thus, doesnt know as much about obj''s and such associated with the element it''s responding on. So, my question remains... how to pass/access relevant values for the behavioral response? On Mar 4, 7:17 am, Peter <ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:> Easiest thing to do is to make a simple remote_form_for/ > form_remote_tag and look at the jQuery it produces in its onsubmit > function. However, I''m a little confused, why not just put your > select box inside a form tag that posts to your URL and let rails > helpers + jrails do the parameter scrapping and submission for you? > > On Mar 4, 1:31 am, lunaclaire <szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thx, Amar. > > > I should have been more clear... My need for answers stems from my > > ignorance of how to access values known in a view to JS and the jquery > > code so that they can be accessed there or posted back to the server > > thru ajax. > > > curr the remote_function() call has the url params which are known in > > my view (the action to post to and the obj ID of interest that the > > selection is for), but I cant figure out how to generate that url in > > JS/jQuery > > > I think I''ve done this kind of thing before, but I''m missing it at the > > moment. > > > Can someone show me? > > > On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > lunaclaire wrote: > > > > II''m switching to jQuery and wondering how do I pull the onchange: > > > > stuff out of the following for a select and put it into a handler? > > > > > here''s what I have in my view now: > > > > > <%= select_tag :selected_email, > > > > options_from_collection_for_select(update_request.contact.emails, > > > > ''id'', ''value'', update_request.contact.primary_email_id), > > > > :onchange => remote_function(:url => {:action > > > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > > > value"), > > > > :id => "request_email_#{update_request.id}" %> > > > > $("#your_select_id").live("change",function(event){ > > > //It return whatever value is selected > > > value_of_select =$("#your_select_id").val(); > > > //Now call ajax request on change > > > //You can refer codehttp://railstech.com/?p=58}); > > > > Refer Codehttp://railstech.com/?p=58 > > > -- > > > Posted viahttp://www.ruby-forum.com/. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-04 17:13 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
I did take the first steps in switching to jQuery by using jRails, but now I''m trying to "do the right thing" and start moving this app away from the obtrusive JS and those helpers. I''ve been using remote_function for a long time, but using the conversion here as a model for how to move behaviors to the application.js and away from the views themselves. So, if someone can answer the question 2 posts back about how to generate/pass the params that should help me "get it" as far as how to set those behaviors up. The conceptual prob I''m having is that the way I''ve been doing it seems to have a tighter coupling betw the obj being displayed and the need in some cases (like this one) to pass info about that obj back to the controller. It seems that by having the jQuery code "waiting" for an event (onChange here), it''s decoupled from the view and, thus, doesnt know as much about obj''s and such associated with the element it''s responding on. So, my question remains... how to pass/access relevant values for the behavioral response? On Mar 4, 7:17 am, Peter <ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:> Easiest thing to do is to make a simple remote_form_for/ > form_remote_tag and look at the jQuery it produces in its onsubmit > function. However, I''m a little confused, why not just put your > select box inside a form tag that posts to your URL and let rails > helpers + jrails do the parameter scrapping and submission for you? > > On Mar 4, 1:31 am, lunaclaire <szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thx, Amar. > > > I should have been more clear... My need for answers stems from my > > ignorance of how to access values known in a view to JS and the jquery > > code so that they can be accessed there or posted back to the server > > thru ajax. > > > curr the remote_function() call has the url params which are known in > > my view (the action to post to and the obj ID of interest that the > > selection is for), but I cant figure out how to generate that url in > > JS/jQuery > > > I think I''ve done this kind of thing before, but I''m missing it at the > > moment. > > > Can someone show me? > > > On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > lunaclaire wrote: > > > > II''m switching to jQuery and wondering how do I pull the onchange: > > > > stuff out of the following for a select and put it into a handler? > > > > > here''s what I have in my view now: > > > > > <%= select_tag :selected_email, > > > > options_from_collection_for_select(update_request.contact.emails, > > > > ''id'', ''value'', update_request.contact.primary_email_id), > > > > :onchange => remote_function(:url => {:action > > > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > > > value"), > > > > :id => "request_email_#{update_request.id}" %> > > > > $("#your_select_id").live("change",function(event){ > > > //It return whatever value is selected > > > value_of_select =$("#your_select_id").val(); > > > //Now call ajax request on change > > > //You can refer codehttp://railstech.com/?p=58}); > > > > Refer Codehttp://railstech.com/?p=58 > > > -- > > > Posted viahttp://www.ruby-forum.com/. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-04 17:32 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
I did take the first steps in switching to jQuery by using jRails, but now I''m trying to "do the right thing" and start moving this app away from the obtrusive JS and those helpers. I''ve been using remote_function for a long time, but using the conversion here as a model for how to move behaviors to the application.js and away from the views themselves. So, if someone can answer the question 2 posts back about how to generate/pass the params that should help me "get it" as far as how to set those behaviors up. The conceptual prob I''m having is that the way I''ve been doing it seems to have a tighter coupling betw the obj being displayed and the need in some cases (like this one) to pass info about that obj back to the controller. It seems that by having the jQuery code "waiting" for an event (onChange here), it''s decoupled from the view and, thus, doesnt know as much about obj''s and such associated with the element it''s responding on. So, my question remains... how to pass/access relevant values for the behavioral response? On Mar 4, 7:17 am, Peter <ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:> Easiest thing to do is to make a simple remote_form_for/ > form_remote_tag and look at the jQuery it produces in its onsubmit > function. However, I''m a little confused, why not just put your > select box inside a form tag that posts to your URL and let rails > helpers + jrails do the parameter scrapping and submission for you? > > On Mar 4, 1:31 am, lunaclaire <szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thx, Amar. > > > I should have been more clear... My need for answers stems from my > > ignorance of how to access values known in a view to JS and the jquery > > code so that they can be accessed there or posted back to the server > > thru ajax. > > > curr the remote_function() call has the url params which are known in > > my view (the action to post to and the obj ID of interest that the > > selection is for), but I cant figure out how to generate that url in > > JS/jQuery > > > I think I''ve done this kind of thing before, but I''m missing it at the > > moment. > > > Can someone show me? > > > On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > lunaclaire wrote: > > > > II''m switching to jQuery and wondering how do I pull the onchange: > > > > stuff out of the following for a select and put it into a handler? > > > > > here''s what I have in my view now: > > > > > <%= select_tag :selected_email, > > > > options_from_collection_for_select(update_request.contact.emails, > > > > ''id'', ''value'', update_request.contact.primary_email_id), > > > > :onchange => remote_function(:url => {:action > > > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > > > value"), > > > > :id => "request_email_#{update_request.id}" %> > > > > $("#your_select_id").live("change",function(event){ > > > //It return whatever value is selected > > > value_of_select =$("#your_select_id").val(); > > > //Now call ajax request on change > > > //You can refer codehttp://railstech.com/?p=58}); > > > > Refer Codehttp://railstech.com/?p=58 > > > -- > > > Posted viahttp://www.ruby-forum.com/. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-04 17:42 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
I did take the first steps in switching to jQuery by using jRails, but now I''m trying to "do the right thing" and start moving this app away from the obtrusive JS and those helpers. I''ve been using remote_function for a long time, but using the conversion here as a model for how to move behaviors to the application.js and away from the views themselves. So, if someone can answer the question 2 posts back about how to generate/pass the params that should help me "get it" as far as how to set those behaviors up. The conceptual prob I''m having is that the way I''ve been doing it seems to have a tighter coupling betw the obj being displayed and the need in some cases (like this one) to pass info about that obj back to the controller. It seems that by having the jQuery code "waiting" for an event (onChange here), it''s decoupled from the view and, thus, doesnt know as much about obj''s and such associated with the element it''s responding on. So, my question remains... how to pass/access relevant values for the behavioral response? On Mar 4, 7:17 am, Peter <ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:> Easiest thing to do is to make a simple remote_form_for/ > form_remote_tag and look at the jQuery it produces in its onsubmit > function. However, I''m a little confused, why not just put your > select box inside a form tag that posts to your URL and let rails > helpers + jrails do the parameter scrapping and submission for you? > > On Mar 4, 1:31 am, lunaclaire <szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thx, Amar. > > > I should have been more clear... My need for answers stems from my > > ignorance of how to access values known in a view to JS and the jquery > > code so that they can be accessed there or posted back to the server > > thru ajax. > > > curr the remote_function() call has the url params which are known in > > my view (the action to post to and the obj ID of interest that the > > selection is for), but I cant figure out how to generate that url in > > JS/jQuery > > > I think I''ve done this kind of thing before, but I''m missing it at the > > moment. > > > Can someone show me? > > > On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > lunaclaire wrote: > > > > II''m switching to jQuery and wondering how do I pull the onchange: > > > > stuff out of the following for a select and put it into a handler? > > > > > here''s what I have in my view now: > > > > > <%= select_tag :selected_email, > > > > options_from_collection_for_select(update_request.contact.emails, > > > > ''id'', ''value'', update_request.contact.primary_email_id), > > > > :onchange => remote_function(:url => {:action > > > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > > > value"), > > > > :id => "request_email_#{update_request.id}" %> > > > > $("#your_select_id").live("change",function(event){ > > > //It return whatever value is selected > > > value_of_select =$("#your_select_id").val(); > > > //Now call ajax request on change > > > //You can refer codehttp://railstech.com/?p=58}); > > > > Refer Codehttp://railstech.com/?p=58 > > > -- > > > Posted viahttp://www.ruby-forum.com/. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-04 18:01 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
I did take the first steps in switching to jQuery by using jRails, but now I''m trying to "do the right thing" and start moving this app away from the obtrusive JS and those helpers. I''ve been using remote_function for a long time, but using the conversion here as a model for how to move behaviors to the application.js and away from the views themselves. So, if someone can answer the question 2 posts back about how to generate/pass the params that should help me "get it" as far as how to set those behaviors up. The conceptual prob I''m having is that the way I''ve been doing it seems to have a tighter coupling betw the obj being displayed and the need in some cases (like this one) to pass info about that obj back to the controller. It seems that by having the jQuery code "waiting" for an event (onChange here), it''s decoupled from the view and, thus, doesnt know as much about obj''s and such associated with the element it''s responding on. So, my question remains... how to pass/access relevant values for the behavioral response? On Mar 4, 7:17 am, Peter <ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:> Easiest thing to do is to make a simple remote_form_for/ > form_remote_tag and look at the jQuery it produces in its onsubmit > function. However, I''m a little confused, why not just put your > select box inside a form tag that posts to your URL and let rails > helpers + jrails do the parameter scrapping and submission for you? > > On Mar 4, 1:31 am, lunaclaire <szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote: > > > Thx, Amar. > > > I should have been more clear... My need for answers stems from my > > ignorance of how to access values known in a view to JS and the jquery > > code so that they can be accessed there or posted back to the server > > thru ajax. > > > curr the remote_function() call has the url params which are known in > > my view (the action to post to and the obj ID of interest that the > > selection is for), but I cant figure out how to generate that url in > > JS/jQuery > > > I think I''ve done this kind of thing before, but I''m missing it at the > > moment. > > > Can someone show me? > > > On Mar 3, 9:34 pm, Amar Daxini <li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote: > > > > lunaclaire wrote: > > > > II''m switching to jQuery and wondering how do I pull the onchange: > > > > stuff out of the following for a select and put it into a handler? > > > > > here''s what I have in my view now: > > > > > <%= select_tag :selected_email, > > > > options_from_collection_for_select(update_request.contact.emails, > > > > ''id'', ''value'', update_request.contact.primary_email_id), > > > > :onchange => remote_function(:url => {:action > > > > => :set_request_email, :id => update_request.id}, :with => "''value='' + > > > > value"), > > > > :id => "request_email_#{update_request.id}" %> > > > > $("#your_select_id").live("change",function(event){ > > > //It return whatever value is selected > > > value_of_select =$("#your_select_id").val(); > > > //Now call ajax request on change > > > //You can refer codehttp://railstech.com/?p=58}); > > > > Refer Codehttp://railstech.com/?p=58 > > > -- > > > Posted viahttp://www.ruby-forum.com/. > >-- 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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
Peter
2010-Mar-05 03:57 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
Doesn''t ''this'' point to the DOM object in question in
JS? I think
this is somewhat what you''re looking for, but perhaps I''m
misunderstanding (you did post about it four times though, so I should
understand :p):
$("#your_select_id").live("change",function(event){
// this is the object(s) you bound to; might need to use $
(this).each(function() {...}) to operate on the right form?
$(this);
// And you can find the form its on like this
$form = $(this).parents(''form'');
// And these are the params for your form
var params = $.param($form.serializeArray());
// Add in authentication token if applicable
params += ''&authenticity_token='' +
encodeURIComponent(...);
// And submit something like this
$.ajax({
data: params,
type: ''post'',
url: ''/some_post_back''
});
}
Or am I still misunderstanding?
On Mar 4, 12:01 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> I did take the first steps in switching to jQuery by using jRails, but
> now I''m trying to "do the right thing" and start moving
this app away
> from the obtrusive JS and those helpers. I''ve been using
> remote_function for a long time, but using the conversion here as a
> model for how to move behaviors to the application.js and away from
> the views themselves.
>
> So, if someone can answer the question 2 posts back about how to
> generate/pass the params that should help me "get it" as far as
how to
> set those behaviors up.
>
> The conceptual prob I''m having is that the way I''ve been
doing it
> seems to have a tighter coupling betw the obj being displayed and the
> need in some cases (like this one) to pass info about that obj back to
> the controller.
>
> It seems that by having the jQuery code "waiting" for an event
> (onChange here), it''s decoupled from the view and, thus, doesnt
know
> as much about obj''s and such associated with the element
it''s
> responding on.
>
> So, my question remains... how to pass/access relevant values for the
> behavioral response?
>
> On Mar 4, 7:17 am, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > Easiest thing to do is to make a simple remote_form_for/
> > form_remote_tag and look at the jQuery it produces in its onsubmit
> > function. However, I''m a little confused, why not just put
your
> > select box inside a form tag that posts to your URL and let rails
> > helpers + jrails do the parameter scrapping and submission for you?
>
> > On Mar 4, 1:31 am, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > Thx, Amar.
>
> > > I should have been more clear... My need for answers stems from
my
> > > ignorance of how to access values known in a view to JS and the
jquery
> > > code so that they can be accessed there or posted back to the
server
> > > thru ajax.
>
> > > curr the remote_function() call has the url params which are
known in
> > > my view (the action to post to and the obj ID of interest that
the
> > > selection is for), but I cant figure out how to generate that url
in
> > > JS/jQuery
>
> > > I think I''ve done this kind of thing before, but
I''m missing it at the
> > > moment.
>
> > > Can someone show me?
>
> > > On Mar 3, 9:34 pm, Amar Daxini
<li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:
>
> > > > lunaclaire wrote:
> > > > > II''m switching to jQuery and wondering how do
I pull the onchange:
> > > > > stuff out of the following for a select and put it into
a handler?
>
> > > > > here''s what I have in my view now:
>
> > > > > <%= select_tag :selected_email,
> > > > >
options_from_collection_for_select(update_request.contact.emails,
> > > > > ''id'', ''value'',
update_request.contact.primary_email_id),
> > > > > :onchange => remote_function(:url => {:action
> > > > > => :set_request_email, :id => update_request.id},
:with => "''value='' +
> > > > > value"),
> > > > > :id =>
"request_email_#{update_request.id}" %>
>
> > > >
$("#your_select_id").live("change",function(event){
> > > > //It return whatever value is selected
> > > > value_of_select =$("#your_select_id").val();
> > > > //Now call ajax request on change
> > > > //You can refer codehttp://railstech.com/?p=58});
>
> > > > Refer Codehttp://railstech.com/?p=58
> > > > --
> > > > Posted viahttp://www.ruby-forum.com/.
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-05 07:30 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
''this'' is going to refer to elements in the DOM, but what that
isnt
what I''m referring to. I''ll be a more explicit below...
Here''s the relevant code from my original post:
remote_function(:url => {:action => :set_request_email, :id =>
update_request.id}, :with => "''value='' + value")
this is in a partial that is rendered for a set of objects. Basically,
for each, I''m loading up a select menu with associated email
addresses. When the user selects one of these from the menu, I''ve been
firing off a call to the :set_request_email action to handle the
change, passing the relevant obj id and the newly selected value.
That''s pretty straightforward when it''s inline in the view.
But, I want to understand how to use jQuery in the way I''ve described
above where the behavior is more decoupled and encapsulated in the JS
code.
So, the jQuery fragment in the first post shows how I get the selected
value, but I still am curious about:
a) how I direct the ajax post to the right action (this is the url: ''/
some_post_back'' in your code fragment and :set_request_email in my
remote_function)
b) how to access the relevant object id to be passed back to the
controller action (this is the update_request.id in my
remote_function)
Since I''m not calling the jQuery code and, instead, simply setting it
up to respond to the change event, I''m missing how it gets
''passed''
these values.
There''s a concept and technique I''m missing here that may be
simple,
but I''m not getting it.
Is my question more clear now?
Thx again.
On Mar 4, 7:57 pm, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org>
wrote:> Doesn''t ''this'' point to the DOM object in
question in JS? I think
> this is somewhat what you''re looking for, but perhaps I''m
> misunderstanding (you did post about it four times though, so I should
> understand :p):
>
> $("#your_select_id").live("change",function(event){
> // this is the object(s) you bound to; might need to use $
> (this).each(function() {...}) to operate on the right form?
> $(this);
>
> // And you can find the form its on like this
> $form = $(this).parents(''form'');
>
> // And these are the params for your form
> var params = $.param($form.serializeArray());
> // Add in authentication token if applicable
> params += ''&authenticity_token='' +
encodeURIComponent(...);
>
> // And submit something like this
> $.ajax({
> data: params,
> type: ''post'',
> url: ''/some_post_back''
> });
>
> }
>
> Or am I still misunderstanding?
>
> On Mar 4, 12:01 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > I did take the first steps in switching to jQuery by using jRails, but
> > now I''m trying to "do the right thing" and start
moving this app away
> > from the obtrusive JS and those helpers. I''ve been using
> > remote_function for a long time, but using the conversion here as a
> > model for how to move behaviors to the application.js and away from
> > the views themselves.
>
> > So, if someone can answer the question 2 posts back about how to
> > generate/pass the params that should help me "get it" as far
as how to
> > set those behaviors up.
>
> > The conceptual prob I''m having is that the way I''ve
been doing it
> > seems to have a tighter coupling betw the obj being displayed and the
> > need in some cases (like this one) to pass info about that obj back to
> > the controller.
>
> > It seems that by having the jQuery code "waiting" for an
event
> > (onChange here), it''s decoupled from the view and, thus,
doesnt know
> > as much about obj''s and such associated with the element
it''s
> > responding on.
>
> > So, my question remains... how to pass/access relevant values for the
> > behavioral response?
>
> > On Mar 4, 7:17 am, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > > Easiest thing to do is to make a simple remote_form_for/
> > > form_remote_tag and look at the jQuery it produces in its
onsubmit
> > > function. However, I''m a little confused, why not just
put your
> > > select box inside a form tag that posts to your URL and let rails
> > > helpers + jrails do the parameter scrapping and submission for
you?
>
> > > On Mar 4, 1:31 am, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > > Thx, Amar.
>
> > > > I should have been more clear... My need for answers stems
from my
> > > > ignorance of how to access values known in a view to JS and
the jquery
> > > > code so that they can be accessed there or posted back to
the server
> > > > thru ajax.
>
> > > > curr the remote_function() call has the url params which are
known in
> > > > my view (the action to post to and the obj ID of interest
that the
> > > > selection is for), but I cant figure out how to generate
that url in
> > > > JS/jQuery
>
> > > > I think I''ve done this kind of thing before, but
I''m missing it at the
> > > > moment.
>
> > > > Can someone show me?
>
> > > > On Mar 3, 9:34 pm, Amar Daxini
<li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:
>
> > > > > lunaclaire wrote:
> > > > > > II''m switching to jQuery and wondering
how do I pull the onchange:
> > > > > > stuff out of the following for a select and put it
into a handler?
>
> > > > > > here''s what I have in my view now:
>
> > > > > > <%= select_tag :selected_email,
> > > > > >
options_from_collection_for_select(update_request.contact.emails,
> > > > > > ''id'', ''value'',
update_request.contact.primary_email_id),
> > > > > > :onchange => remote_function(:url =>
{:action
> > > > > > => :set_request_email, :id =>
update_request.id}, :with => "''value='' +
> > > > > > value"),
> > > > > > :id =>
"request_email_#{update_request.id}" %>
>
> > > > >
$("#your_select_id").live("change",function(event){
> > > > > //It return whatever value is selected
> > > > > value_of_select
=$("#your_select_id").val();
> > > > > //Now call ajax request on change
> > > > > //You can refer codehttp://railstech.com/?p=58});
>
> > > > > Refer Codehttp://railstech.com/?p=58
> > > > > --
> > > > > Posted viahttp://www.ruby-forum.com/.
>
>
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-06 00:47 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
OK, I figured it out. Though I wonder why it was so hard to do
so... :-)
Here''s what I''m doing in case others have the same questions
and find
this...
now in my view template I have:
<%= select_tag :selected_email,
options_from_collection_for_select(update_request.contact.emails,
''id'', ''value'',
update_request.contact.primary_email_id) + ''<option
value="-1">Add New Email...</option>'',
:id => "request_email_#{update_request.id}",
:class => "request_email_select",
:select_email_path => url_for(:controller
=> :update_requests, :action => :set_request_email),
:request_id => update_request.id %>
Note that I''m ''passing'' the data that I need in the
JS code as
*attributes* on the DOM element.
Then in the JS/jQuery code:
$.ajax({
type: "POST",
url: $(this).attr(''select_email_path''),
data: { value: val, id: $(this).attr(''request_id'') },
success: function(html){
...
});
where I look for those attributes.
Seems a little weird to me to set these as attributes, but this works.
I dont know if this is the right way, but as you can see from this
entire thread, I never discovered another way to pass params to
jQuery.
On Mar 4, 11:30 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> ''this'' is going to refer to elements in the DOM, but what
that isnt
> what I''m referring to. I''ll be a more explicit below...
>
> Here''s the relevant code from my original post:
>
> remote_function(:url => {:action => :set_request_email, :id =>
> update_request.id}, :with => "''value='' +
value")
>
> this is in a partial that is rendered for a set of objects. Basically,
> for each, I''m loading up a select menu with associated email
> addresses. When the user selects one of these from the menu, I''ve
been
> firing off a call to the :set_request_email action to handle the
> change, passing the relevant obj id and the newly selected value.
>
> That''s pretty straightforward when it''s inline in the
view.
>
> But, I want to understand how to use jQuery in the way I''ve
described
> above where the behavior is more decoupled and encapsulated in the JS
> code.
>
> So, the jQuery fragment in the first post shows how I get the selected
> value, but I still am curious about:
>
> a) how I direct the ajax post to the right action (this is the url:
''/
> some_post_back'' in your code fragment and :set_request_email in my
> remote_function)
>
> b) how to access the relevant object id to be passed back to the
> controller action (this is the update_request.id in my
> remote_function)
>
> Since I''m not calling the jQuery code and, instead, simply setting
it
> up to respond to the change event, I''m missing how it gets
''passed''
> these values.
>
> There''s a concept and technique I''m missing here that may
be simple,
> but I''m not getting it.
>
> Is my question more clear now?
>
> Thx again.
>
> On Mar 4, 7:57 pm, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > Doesn''t ''this'' point to the DOM object in
question in JS? I think
> > this is somewhat what you''re looking for, but perhaps
I''m
> > misunderstanding (you did post about it four times though, so I should
> > understand :p):
>
> >
$("#your_select_id").live("change",function(event){
> > // this is the object(s) you bound to; might need to use $
> > (this).each(function() {...}) to operate on the right form?
> > $(this);
>
> > // And you can find the form its on like this
> > $form = $(this).parents(''form'');
>
> > // And these are the params for your form
> > var params = $.param($form.serializeArray());
> > // Add in authentication token if applicable
> > params += ''&authenticity_token='' +
encodeURIComponent(...);
>
> > // And submit something like this
> > $.ajax({
> > data: params,
> > type: ''post'',
> > url: ''/some_post_back''
> > });
>
> > }
>
> > Or am I still misunderstanding?
>
> > On Mar 4, 12:01 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > I did take the first steps in switching to jQuery by using
jRails, but
> > > now I''m trying to "do the right thing" and
start moving this app away
> > > from the obtrusive JS and those helpers. I''ve been using
> > > remote_function for a long time, but using the conversion here as
a
> > > model for how to move behaviors to the application.js and away
from
> > > the views themselves.
>
> > > So, if someone can answer the question 2 posts back about how to
> > > generate/pass the params that should help me "get it"
as far as how to
> > > set those behaviors up.
>
> > > The conceptual prob I''m having is that the way
I''ve been doing it
> > > seems to have a tighter coupling betw the obj being displayed and
the
> > > need in some cases (like this one) to pass info about that obj
back to
> > > the controller.
>
> > > It seems that by having the jQuery code "waiting" for
an event
> > > (onChange here), it''s decoupled from the view and, thus,
doesnt know
> > > as much about obj''s and such associated with the element
it''s
> > > responding on.
>
> > > So, my question remains... how to pass/access relevant values for
the
> > > behavioral response?
>
> > > On Mar 4, 7:17 am, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > > > Easiest thing to do is to make a simple remote_form_for/
> > > > form_remote_tag and look at the jQuery it produces in its
onsubmit
> > > > function. However, I''m a little confused, why not
just put your
> > > > select box inside a form tag that posts to your URL and let
rails
> > > > helpers + jrails do the parameter scrapping and submission
for you?
>
> > > > On Mar 4, 1:31 am, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > > > Thx, Amar.
>
> > > > > I should have been more clear... My need for answers
stems from my
> > > > > ignorance of how to access values known in a view to JS
and the jquery
> > > > > code so that they can be accessed there or posted back
to the server
> > > > > thru ajax.
>
> > > > > curr the remote_function() call has the url params
which are known in
> > > > > my view (the action to post to and the obj ID of
interest that the
> > > > > selection is for), but I cant figure out how to
generate that url in
> > > > > JS/jQuery
>
> > > > > I think I''ve done this kind of thing before,
but I''m missing it at the
> > > > > moment.
>
> > > > > Can someone show me?
>
> > > > > On Mar 3, 9:34 pm, Amar Daxini
<li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:
>
> > > > > > lunaclaire wrote:
> > > > > > > II''m switching to jQuery and
wondering how do I pull the onchange:
> > > > > > > stuff out of the following for a select and
put it into a handler?
>
> > > > > > > here''s what I have in my view now:
>
> > > > > > > <%= select_tag :selected_email,
> > > > > > >
options_from_collection_for_select(update_request.contact.emails,
> > > > > > > ''id'',
''value'', update_request.contact.primary_email_id),
> > > > > > > :onchange => remote_function(:url =>
{:action
> > > > > > > => :set_request_email, :id =>
update_request.id}, :with => "''value='' +
> > > > > > > value"),
> > > > > > > :id =>
"request_email_#{update_request.id}" %>
>
> > > > > >
$("#your_select_id").live("change",function(event){
> > > > > > //It return whatever value is selected
> > > > > > value_of_select
=$("#your_select_id").val();
> > > > > > //Now call ajax request on change
> > > > > > //You can refer codehttp://railstech.com/?p=58});
>
> > > > > > Refer Codehttp://railstech.com/?p=58
> > > > > > --
> > > > > > Posted viahttp://www.ruby-forum.com/.
>
>
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-06 00:51 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
OK, I figured it out. Though I wonder why it was so hard to do
so... :-)
Here''s what I''m doing in case others have the same questions
and find
this...
now in my view template I have:
<%= select_tag :selected_email,
options_from_collection_for_select(update_request.contact.emails,
''id'', ''value'',
update_request.contact.primary_email_id) + ''<option
value="-1">Add New Email...</option>'',
:id => "request_email_#{update_request.id}",
:class => "request_email_select",
:select_email_path => url_for(:controller
=> :update_requests, :action => :set_request_email),
:request_id => update_request.id %>
Note that I''m ''passing'' the data that I need in the
JS code as
*attributes* on the DOM element.
Then in the JS/jQuery code:
$.ajax({
type: "POST",
url: $(this).attr(''select_email_path''),
data: { value: val, id: $(this).attr(''request_id'') },
success: function(html){
...
});
where I look for those attributes.
Seems a little weird to me to set these as attributes, but this works.
I dont know if this is the right way, but as you can see from this
entire thread, I never discovered another way to pass params to
jQuery.
On Mar 4, 11:30 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> ''this'' is going to refer to elements in the DOM, but what
that isnt
> what I''m referring to. I''ll be a more explicit below...
>
> Here''s the relevant code from my original post:
>
> remote_function(:url => {:action => :set_request_email, :id =>
> update_request.id}, :with => "''value='' +
value")
>
> this is in a partial that is rendered for a set of objects. Basically,
> for each, I''m loading up a select menu with associated email
> addresses. When the user selects one of these from the menu, I''ve
been
> firing off a call to the :set_request_email action to handle the
> change, passing the relevant obj id and the newly selected value.
>
> That''s pretty straightforward when it''s inline in the
view.
>
> But, I want to understand how to use jQuery in the way I''ve
described
> above where the behavior is more decoupled and encapsulated in the JS
> code.
>
> So, the jQuery fragment in the first post shows how I get the selected
> value, but I still am curious about:
>
> a) how I direct the ajax post to the right action (this is the url:
''/
> some_post_back'' in your code fragment and :set_request_email in my
> remote_function)
>
> b) how to access the relevant object id to be passed back to the
> controller action (this is the update_request.id in my
> remote_function)
>
> Since I''m not calling the jQuery code and, instead, simply setting
it
> up to respond to the change event, I''m missing how it gets
''passed''
> these values.
>
> There''s a concept and technique I''m missing here that may
be simple,
> but I''m not getting it.
>
> Is my question more clear now?
>
> Thx again.
>
> On Mar 4, 7:57 pm, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > Doesn''t ''this'' point to the DOM object in
question in JS? I think
> > this is somewhat what you''re looking for, but perhaps
I''m
> > misunderstanding (you did post about it four times though, so I should
> > understand :p):
>
> >
$("#your_select_id").live("change",function(event){
> > // this is the object(s) you bound to; might need to use $
> > (this).each(function() {...}) to operate on the right form?
> > $(this);
>
> > // And you can find the form its on like this
> > $form = $(this).parents(''form'');
>
> > // And these are the params for your form
> > var params = $.param($form.serializeArray());
> > // Add in authentication token if applicable
> > params += ''&authenticity_token='' +
encodeURIComponent(...);
>
> > // And submit something like this
> > $.ajax({
> > data: params,
> > type: ''post'',
> > url: ''/some_post_back''
> > });
>
> > }
>
> > Or am I still misunderstanding?
>
> > On Mar 4, 12:01 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > I did take the first steps in switching to jQuery by using
jRails, but
> > > now I''m trying to "do the right thing" and
start moving this app away
> > > from the obtrusive JS and those helpers. I''ve been using
> > > remote_function for a long time, but using the conversion here as
a
> > > model for how to move behaviors to the application.js and away
from
> > > the views themselves.
>
> > > So, if someone can answer the question 2 posts back about how to
> > > generate/pass the params that should help me "get it"
as far as how to
> > > set those behaviors up.
>
> > > The conceptual prob I''m having is that the way
I''ve been doing it
> > > seems to have a tighter coupling betw the obj being displayed and
the
> > > need in some cases (like this one) to pass info about that obj
back to
> > > the controller.
>
> > > It seems that by having the jQuery code "waiting" for
an event
> > > (onChange here), it''s decoupled from the view and, thus,
doesnt know
> > > as much about obj''s and such associated with the element
it''s
> > > responding on.
>
> > > So, my question remains... how to pass/access relevant values for
the
> > > behavioral response?
>
> > > On Mar 4, 7:17 am, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > > > Easiest thing to do is to make a simple remote_form_for/
> > > > form_remote_tag and look at the jQuery it produces in its
onsubmit
> > > > function. However, I''m a little confused, why not
just put your
> > > > select box inside a form tag that posts to your URL and let
rails
> > > > helpers + jrails do the parameter scrapping and submission
for you?
>
> > > > On Mar 4, 1:31 am, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > > > Thx, Amar.
>
> > > > > I should have been more clear... My need for answers
stems from my
> > > > > ignorance of how to access values known in a view to JS
and the jquery
> > > > > code so that they can be accessed there or posted back
to the server
> > > > > thru ajax.
>
> > > > > curr the remote_function() call has the url params
which are known in
> > > > > my view (the action to post to and the obj ID of
interest that the
> > > > > selection is for), but I cant figure out how to
generate that url in
> > > > > JS/jQuery
>
> > > > > I think I''ve done this kind of thing before,
but I''m missing it at the
> > > > > moment.
>
> > > > > Can someone show me?
>
> > > > > On Mar 3, 9:34 pm, Amar Daxini
<li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:
>
> > > > > > lunaclaire wrote:
> > > > > > > II''m switching to jQuery and
wondering how do I pull the onchange:
> > > > > > > stuff out of the following for a select and
put it into a handler?
>
> > > > > > > here''s what I have in my view now:
>
> > > > > > > <%= select_tag :selected_email,
> > > > > > >
options_from_collection_for_select(update_request.contact.emails,
> > > > > > > ''id'',
''value'', update_request.contact.primary_email_id),
> > > > > > > :onchange => remote_function(:url =>
{:action
> > > > > > > => :set_request_email, :id =>
update_request.id}, :with => "''value='' +
> > > > > > > value"),
> > > > > > > :id =>
"request_email_#{update_request.id}" %>
>
> > > > > >
$("#your_select_id").live("change",function(event){
> > > > > > //It return whatever value is selected
> > > > > > value_of_select
=$("#your_select_id").val();
> > > > > > //Now call ajax request on change
> > > > > > //You can refer codehttp://railstech.com/?p=58});
>
> > > > > > Refer Codehttp://railstech.com/?p=58
> > > > > > --
> > > > > > Posted viahttp://www.ruby-forum.com/.
>
>
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.
lunaclaire
2010-Mar-06 01:17 UTC
Re: jQuery conversion - how to replace :onchange => remote_function() call?
OK, I figured it out. Though I wonder why it was so hard to do
so... :-)
Here''s what I''m doing in case others have the same questions
and find
this...
now in my view template I have:
<%= select_tag :selected_email,
options_from_collection_for_select(update_request.contact.emails,
''id'', ''value'',
update_request.contact.primary_email_id) + ''<option
value="-1">Add New Email...</option>'',
:id => "request_email_#{update_request.id}",
:class => "request_email_select",
:select_email_path => url_for(:controller
=> :update_requests, :action => :set_request_email),
:request_id => update_request.id %>
Note that I''m ''passing'' the data that I need in the
JS code as
*attributes* on the DOM element.
Then in the JS/jQuery code:
$.ajax({
type: "POST",
url: $(this).attr(''select_email_path''),
data: { value: val, id: $(this).attr(''request_id'') },
success: function(html){
...
});
where I look for those attributes.
Seems a little weird to me to set these as attributes, but this works.
I dont know if this is the right way, but as you can see from this
entire thread, I never discovered another way to pass params to
jQuery.
On Mar 4, 11:30 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org>
wrote:> ''this'' is going to refer to elements in the DOM, but what
that isnt
> what I''m referring to. I''ll be a more explicit below...
>
> Here''s the relevant code from my original post:
>
> remote_function(:url => {:action => :set_request_email, :id =>
> update_request.id}, :with => "''value='' +
value")
>
> this is in a partial that is rendered for a set of objects. Basically,
> for each, I''m loading up a select menu with associated email
> addresses. When the user selects one of these from the menu, I''ve
been
> firing off a call to the :set_request_email action to handle the
> change, passing the relevant obj id and the newly selected value.
>
> That''s pretty straightforward when it''s inline in the
view.
>
> But, I want to understand how to use jQuery in the way I''ve
described
> above where the behavior is more decoupled and encapsulated in the JS
> code.
>
> So, the jQuery fragment in the first post shows how I get the selected
> value, but I still am curious about:
>
> a) how I direct the ajax post to the right action (this is the url:
''/
> some_post_back'' in your code fragment and :set_request_email in my
> remote_function)
>
> b) how to access the relevant object id to be passed back to the
> controller action (this is the update_request.id in my
> remote_function)
>
> Since I''m not calling the jQuery code and, instead, simply setting
it
> up to respond to the change event, I''m missing how it gets
''passed''
> these values.
>
> There''s a concept and technique I''m missing here that may
be simple,
> but I''m not getting it.
>
> Is my question more clear now?
>
> Thx again.
>
> On Mar 4, 7:57 pm, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > Doesn''t ''this'' point to the DOM object in
question in JS? I think
> > this is somewhat what you''re looking for, but perhaps
I''m
> > misunderstanding (you did post about it four times though, so I should
> > understand :p):
>
> >
$("#your_select_id").live("change",function(event){
> > // this is the object(s) you bound to; might need to use $
> > (this).each(function() {...}) to operate on the right form?
> > $(this);
>
> > // And you can find the form its on like this
> > $form = $(this).parents(''form'');
>
> > // And these are the params for your form
> > var params = $.param($form.serializeArray());
> > // Add in authentication token if applicable
> > params += ''&authenticity_token='' +
encodeURIComponent(...);
>
> > // And submit something like this
> > $.ajax({
> > data: params,
> > type: ''post'',
> > url: ''/some_post_back''
> > });
>
> > }
>
> > Or am I still misunderstanding?
>
> > On Mar 4, 12:01 pm, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > I did take the first steps in switching to jQuery by using
jRails, but
> > > now I''m trying to "do the right thing" and
start moving this app away
> > > from the obtrusive JS and those helpers. I''ve been using
> > > remote_function for a long time, but using the conversion here as
a
> > > model for how to move behaviors to the application.js and away
from
> > > the views themselves.
>
> > > So, if someone can answer the question 2 posts back about how to
> > > generate/pass the params that should help me "get it"
as far as how to
> > > set those behaviors up.
>
> > > The conceptual prob I''m having is that the way
I''ve been doing it
> > > seems to have a tighter coupling betw the obj being displayed and
the
> > > need in some cases (like this one) to pass info about that obj
back to
> > > the controller.
>
> > > It seems that by having the jQuery code "waiting" for
an event
> > > (onChange here), it''s decoupled from the view and, thus,
doesnt know
> > > as much about obj''s and such associated with the element
it''s
> > > responding on.
>
> > > So, my question remains... how to pass/access relevant values for
the
> > > behavioral response?
>
> > > On Mar 4, 7:17 am, Peter
<ppgeng...-vA8bmGSXo1KakBO8gow8eQ@public.gmane.org> wrote:
>
> > > > Easiest thing to do is to make a simple remote_form_for/
> > > > form_remote_tag and look at the jQuery it produces in its
onsubmit
> > > > function. However, I''m a little confused, why not
just put your
> > > > select box inside a form tag that posts to your URL and let
rails
> > > > helpers + jrails do the parameter scrapping and submission
for you?
>
> > > > On Mar 4, 1:31 am, lunaclaire
<szager...-Re5JQEeQqe8AvxtiuMwx3w@public.gmane.org> wrote:
>
> > > > > Thx, Amar.
>
> > > > > I should have been more clear... My need for answers
stems from my
> > > > > ignorance of how to access values known in a view to JS
and the jquery
> > > > > code so that they can be accessed there or posted back
to the server
> > > > > thru ajax.
>
> > > > > curr the remote_function() call has the url params
which are known in
> > > > > my view (the action to post to and the obj ID of
interest that the
> > > > > selection is for), but I cant figure out how to
generate that url in
> > > > > JS/jQuery
>
> > > > > I think I''ve done this kind of thing before,
but I''m missing it at the
> > > > > moment.
>
> > > > > Can someone show me?
>
> > > > > On Mar 3, 9:34 pm, Amar Daxini
<li...-fsXkhYbjdPsEEoCn2XhGlw@public.gmane.org> wrote:
>
> > > > > > lunaclaire wrote:
> > > > > > > II''m switching to jQuery and
wondering how do I pull the onchange:
> > > > > > > stuff out of the following for a select and
put it into a handler?
>
> > > > > > > here''s what I have in my view now:
>
> > > > > > > <%= select_tag :selected_email,
> > > > > > >
options_from_collection_for_select(update_request.contact.emails,
> > > > > > > ''id'',
''value'', update_request.contact.primary_email_id),
> > > > > > > :onchange => remote_function(:url =>
{:action
> > > > > > > => :set_request_email, :id =>
update_request.id}, :with => "''value='' +
> > > > > > > value"),
> > > > > > > :id =>
"request_email_#{update_request.id}" %>
>
> > > > > >
$("#your_select_id").live("change",function(event){
> > > > > > //It return whatever value is selected
> > > > > > value_of_select
=$("#your_select_id").val();
> > > > > > //Now call ajax request on change
> > > > > > //You can refer codehttp://railstech.com/?p=58});
>
> > > > > > Refer Codehttp://railstech.com/?p=58
> > > > > > --
> > > > > > Posted viahttp://www.ruby-forum.com/.
>
>
--
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-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@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.