Ajax test not working

Am having real probs trying to use Ajax with my Rails app. I have set up a test as

follows:

in javascript file:

window.onload = function() {     $('#test').bind('ajax:success', function() {         alert("success");     }; } in view:

<%= link_to "test", { :action => :getDiagram }, :remote => true, :id => "test" %> in controller:

def getDiagram

end

Now I know this looks odd with the empty controller action, but I would expect this code to just show a popup window with 'success' and leave the current page loaded when the link is clicked? Instead i get the missing template message like its trying to load a page synchronously rather than using ajax?

Can anyone get my test to work? Do I need to upgrade or add a gem file?

Thanks in advance

Jason

Am having real probs trying to use Ajax with my Rails app. I have set up

a test as

follows:

in javascript file:

window.onload = function() {

$('#test').bind('ajax:success', function() {

    alert("success");

};

}

This javascript is syntactically incorrect - you’re not closing the parens you open just after “bind”

Also if you want to render nothing you do need to explicitly say that (eg render :nothing => true) or rails will complain that there is no template

Fred

Jason Walsh wrote in post #1080993:

Am having real probs trying to use Ajax with my Rails app. I have set up a test as

follows:

in javascript file:

window.onload = function() {     $('#test').bind('ajax:success', function() {         alert("success");     }; } in view:

<%= link_to "test", { :action => :getDiagram }, :remote => true, :id => "test" %> in controller:

def getDiagram

end

Now I know this looks odd with the empty controller action, but I would expect this code to just show a popup window with 'success' and leave the current page loaded when the link is clicked? Instead i get the missing template message like its trying to load a page synchronously rather than using ajax?

Can anyone get my test to work? Do I need to upgrade or add a gem file?

Thanks in advance

Jason

What I have noticed is that 1. The javascript syntax is not correct 2. You didn't specify a controller from the link 3. It is probably make more sense to test with Json response using     respond_to :json     respond_with { :status => 'okay' }

AndreM wrote in post #1081168:

Maybe try in controller:

def getDiagram

respond_to do |format|   format.js end

end

Hi Andre

Tried that - dont get error but renders a blank template. My main concern is why the event isnt firing and showing the alert.

Frederick Cheung wrote in post #1081170:

webber han wrote in post #1081214:

Jason Walsh wrote in post #1080993:

Am having real probs trying to use Ajax with my Rails app. I have set up a test as

follows:

in javascript file:

window.onload = function() {     $('#test').bind('ajax:success', function() {         alert("success");     }; } in view:

<%= link_to "test", { :action => :getDiagram }, :remote => true, :id => "test" %> in controller:

def getDiagram

end

Now I know this looks odd with the empty controller action, but I would expect this code to just show a popup window with 'success' and leave the current page loaded when the link is clicked? Instead i get the missing template message like its trying to load a page synchronously rather than using ajax?

Can anyone get my test to work? Do I need to upgrade or add a gem file?

Thanks in advance

Jason

What I have noticed is that 1. The javascript syntax is not correct 2. You didn't specify a controller from the link 3. It is probably make more sense to test with Json response using     respond_to :json     respond_with { :status => 'okay' }

Thanks Webber

1. Noticed the missing bracket and fixed. 2. Have set a route as follows: match '/getdiagram', :to => 'prosesses#getDiagram' It seems to be executing the right controller/action from the error message i get 3. Tried that but get: c:/Users/Jason/rails_projects/procstor/app/controllers/prosesses_controller.rb:123: syntax error, unexpected tASSOC, expecting '}'     respond_with { :status => 'okay' }                              ^

The parser sees this line as a method with a block and then the => is confusing (not allowed there, it isn't in a Hash)

Either of these changes will do what you expect:

    respond_with({ :status => 'okay' }) # no longer looks like a block     respond_with :status => 'okay' # must be a hash literal     respond_with( :status => 'okay' ) # must be a hash literal

Although the value for :status might need to be 'OK' or 200 rather than 'okay' and you need a respond_to in the controller. http://apidock.com/rails/ActionController/MimeResponds/respond_with

-Rob