javascriptjqueryruby-on-railsajaxlink-to-remote

apply link_to_remote from a jQuery handler in Rails


I have a game with 5 boxes and when a box is clicked I want to send an ajax request to a controller that in effect is exactly like link_to_remote. I need to send a hash of informatoin to a definition in a controller but don't need anything to get sent back or even updated.

What the following jQuery/js mess does is render a function which either correct or incorrect. From those functions I want to be able to send an ajax request to some controller with a hash of information.

$('#tones a').click(function(e) {
        if (playGame) { 
        id = this.id.replace('t', '')
            if (correctCharacter[1] == id) {
                correct();
            } else {
                incorrect();
            }
        addCharacters();
        }
    });
})

I know link_to_remote has the following syntax and this link is not really related at all:

# Generates: <a href="#" onclick="new Ajax.Updater('posts', '/blog/destroy/3', {asynchronous:true, evalScripts:true});
link_to_remote "Delete this post", :update => "posts", :url => { :action => "destroy", :id => post.id }

If you could show me how to make this link work in the latter function. I just need one ajax link or request whatever is right that goes to a controller and sends a hash of information.

I want to put it in the following block. If it is correct then it will trigger and if it is not correct then it will trigger.

if (correctCharacter[1] == id) {
                correct();
            } else {
                incorrect();
            }

Here is js source from a link_to_remote I put on a page just to see the security stuff. It's not really related to where I want to post information but it is related to my specific application.

<a href="#" onclick="new Ajax.Updater('posts', '/groups/new', {asynchronous:true, evalScripts:true, parameters:'authenticity_token=' + encodeURIComponent('jQx+jlICHcZ3X6SPOcNUNBPJF8qLGDarO/nasHfWkvQ=')}); return false;">Test</a>

Solution

  • This is what I came up with. It works except it isn't posting to the correct url.

    $.ajax({
       type: "POST",
       url: "analytics/test",
       data: 'correct=' + correct_or_incorrect + '&id=' + correctCharacter[3] + "'"
      });