if.request.xhr?

Hope I’m not to far off base here - I want a link that will first go the controller, test for javascript and then re-direct to either ajax or non-ajax page. I have the controller code set up but a bit unsure about the link itself

Do I need to use a link_to_remote link to get the user over to the controller /action and if.request.xhr? or should just a link_to work. I ask because a link_to doesn’t seem to mean anything , js is turned on and still wind up at the non-ajax form.

Stuart

Hi,

If your using the normal link_to helper, your link wont use a xmlhttprequest-object to send the request, but a normal get/post request. Link_to_remote uses the prototype javascript library to send an ajax-request and you will be able to recognize the request as ajax in your controller.

Richard

Okay, that’s what I thought. However , the link isn’t working , meaning right now when I place the mouse over the link it says /mydomain/#

I have this in the html doc:

<%= javascript_include_tag "prototype" %>

And have composed the link as such (though I’ve tried a few different variations)

<%= link_to_remote ‘Search’, {:url => { :action => ‘failover’ }} %>

Shouldn’t that create the link ?

Thank you Stuart

Bump :slight_smile:

Hi,

If your using the normal link_to helper, your link wont use a xmlhttprequest-object to send the request, but a normal get/post

request. Link_to_remote uses the prototype javascript library to send an ajax-request and you will be able to recognize the request as ajax in your controller.

Richard

Okay, that’s what I thought. However , the link isn’t working , meaning right now when I place the mouse over the link it says /mydomain/#

I have this in the html doc:

<%= javascript_include_tag "prototype" %>

And have composed the link as such (though I’ve tried a few different variations)

<%= link_to_remote ‘Search’, {:url => { :action => ‘failover’ }} %>

Shouldn’t that create the link ?

Maybe I’m way off base here. I am looking at a codecite presentation.

I’ve set up my controller action as such:

def failover if request.xhr? redirect_to :controller => ‘ajaxsearch’, :action => ‘index’ else redirect_to :controller => ‘searches’, :action => ‘new’

Dark Ambient <sambient@...> writes:

Okay, that's what I thought. However , the link isn't working , meaning right now when I place the mouse over the link it says /mydomain/#

That's because the link is called with Javascript and coded into a JS function call, whereas the status bar only shows the value of the link's href attribute. View Source and you'll see an onclick which actually calls the remote call.

The <a> itself never actually gets activated, it's disabled by the javascript in the <a>s onclick.

If you want, you can supply a URL to be called if people have javascript switched off, by adding an :href to the link_to_remote:

<%= link_to_remote "Text", {:controller => blah, :action => blah}, {:href => url_for(:controller => blah2, :action => blah3)}

This will allow non-javascript users to access your site and possibly get the information they would have gotten, at the cost of a full page request. That's not an automatic thing thought, your code has to be able to deal with both requests

Gareth

Thanks Gareth. Unfortunately then something is going wrong here. I created the link_to_remote - <%= link_to_remote “Search for jobs”, {:controller => ‘ajaxsearch’, :action => ‘search’}, {:href => url_for(:controller => ‘searches’, :action => ‘new’)}%>

I believe that is right. With javascript turned on the link does nothing.

With js off, I get taken to the right place.

Page source : Search for jobs

Am I totally lame and missing something or is something weird going on ?

Stuart

Alright, I think I got it now , I added the needed div / dom id. Which updated the page the link is on. I guess that is the way it’s intended to work.

Stuart

Dark Ambient <sambient@...> writes:

Alright, I think I got it now , I added the needed div / dom id. Which updated the page the link is on. I guess that is the way it's intended to work.

Stuart

That'll be my bad, for trying to guess the link_to_remote function call. Well done for working it out