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...@gmail.com> 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...@prevailhs.com> 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...@gmail.com> 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...@prevailhs.com> 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...@gmail.com> 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...@ruby-forum.com> 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-t...@googlegroups.com. To unsubscribe from this group, send email to rubyonrails-talk+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/rubyonrails-talk?hl=en.