I have select box in one of my views which lists a few contacts.
I also have an option in this select box to add a new contact.
There is also an observe_field hook to this select box that Ajax
requests further info about the selected contact from the controller
and displays it in an adjacent “info” div.
Now, I need to redirect the user to the New Contact page from the
controller if the selected value from the select box is “new contact”.
This is the controller code I have now
…
if request.xml_http_request?
if !@contact.blank?
render :partial => “show”, :layout => false
elsif params[:id] == “new contact”
redirect_to new_contact_path
else
render :text => “Please select a contact”
end
end
This renders the New Contact page in the “info” div. Whereas, I want
the user to be completely redirected to the New Contact page like a
HTTP response would.
Any thoughts on how I can handle this? Any ideas welcome…
Thanks!
This renders the New Contact page in the “info” div. Whereas, I want
the user to be completely redirected to the New Contact page like a
HTTP response would.
Any thoughts on how I can handle this? Any ideas welcome…
Thanks!
Two ways of doing this: either the observe_field thingy has a callback
that redirects in the right circumstances or you switch to using
render :update (and then use page.redirect_to), In the latter case you
have to use render :update for all of these 3 possibilities and you
need to change your observe_field invocation to not pass the :update
option.
render :update
Ive got quite a few Ruby conditions and styling going in the js.erb
file im using now to display the contact information. And ive got more
possibilities than the 3 ive shown above in the controller. So this
might not be the right option for me. Right?
observe_field callback
This might work for me. Right now, the only callbacks I have on the
observe_field are showing and hiding the spinner. I have never written
custom callbacks on Rails JS helpers. Could you help me through this?
So im guessing I should be having something like this
Element.hide('spinner');
if value=="new contact"
{
//how do i redirect to the New Contact page?
}
else
{
//show contact info. But how do I handle the conditions
and styling??
}
}
Am I getting the basic idea right? If yes, how can I handle the
conditional redirecting and the rest in Javascript?
Thanks again Fred.
render :update
Ive got quite a few Ruby conditions and styling going in the js.erb
file im using now to display the contact information. And ive got more
possibilities than the 3 ive shown above in the controller. So this
might not be the right option for me. Right?
I’m not sure this would be a problem - seems like a few calls to
page.replace_html ‘info’, :partial => ‘blah’ would do it in the other
cases.
Nearly. your success callback gets 2 thigns: response and
responseJSON. responseJSON contains whatever JSON you put in the X-
JSON header of your response. You callback can be as simple as
You were right. It was easy enough to use render :update and
replace_html with :partial to accomplish it.
I am however curious as to how we can do this using JSON. I started
reading about JSON for another feature I needed but I realised I dint
need JSON for it. I feel it would be a good exercise for me to
implement it in tackling this problem. Could you explain a little bit
more about the code you have shown me above or point me to where I can
find the documentation explaining this? From what I remember, JSON is
a format (Object Notation) to represent ActiveRecord objects (in
Rails) for JS to handle. But setting the header, responseJSON et all
is new to me.
I am trying to implement Craig A.'s Redbox for some form
submissions.
Ideally for me, when the user selects “Add contact” a redbox modal
window should open with the New Contact form and on submission, the
contacts select box on the main page should get updated with the newly
added contact.
I was looking into invoking Redbox from the controller for this
(http://ahref.in/8dc58) but I couldnt quite grasp the discussion
there.
Can Redbox be brought in here without too much trouble?
thanks again for you inputs!
This forum is not affiliated to the Ruby language, Ruby on Rails framework, nor any Ruby applications discussed here.