On Oct 25, 2012, at 4:32 PM, Jason Walsh wrote:

> 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

-- 
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@googlegroups.com.
To unsubscribe from this group, send email to 
rubyonrails-talk+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.


Reply via email to