AJAX与Ruby on Rails?

问题描述:

这可能是一个非常愚蠢的问题,但一个简单的答案,但...AJAX与Ruby on Rails?

我正在一个项目,我需要使用AJAX发送/接收信息。我正在使用Ruby on Rails(我很新),而不是使用helper方法或默认Javascript文件中的内置功能,我需要在自己的Javascript中手动执行此操作。

我相信最终我会发送一个带有JSON对象的请求,然后让控制器返回另一个包含请求信息的JSON对象。

问题是,我似乎无法找到用于直接从Javascript发送某些特定控制器方法的参数的语法 - 我所有的Google结果都是使用Rails AJAX辅助方法的教程。

如果使用jQuery是您的选择,jQuery.ajax将解决您的问题。

[对于那些喜欢说jQuery不是解决所有问题的人,我知道这一点。我只是给他一个选择]。

+0

从来没有使用jQuery的,但毕竟是看起来很有希望。你知道在jQuery中添加是否会破坏现有的Rails AJAX支持? (或其他Javascript相关的事情) – 2010-03-15 14:55:16

+0

我不认为它会打破任何东西。我在工作中使用jQuery,这非常有帮助。看看http://api.jquery.com/jQuery.ajax/ – 2010-03-15 14:59:27

+1

jQuery可以通过覆盖“$”选择器来破坏事物。您可以通过调用noConflict(http://api.jquery.com/jQuery.noConflict/)或通过我的答案切换JavaScript提供程序来解决此问题。 – 2010-03-15 15:32:47

根据Rails的版本你使用,你可以做到以下几点:

  1. 安装jrails插件。这将用jQuery替换应用程序中的所有Prototype JavaScript。这意味着你现在可以访问所有的jQuery库,但它不会破坏你现有的rails帮助器(remote_form_for等)。

  2. 现在您可以使用jQuery AJAX来制作您想要制作的任何AJAX请求。一个简单的例子是像下面的东西:

    //Let's get a specific post by id 
    $.ajax({ 
        type: "GET", 
        url: "/posts/123", 
        success: function(data){ 
         //put the data in the DOM 
        } 
    }); 
    

然后,只需添加相应respond_to在你的控制器:

PostsController < ApplicationController 
    def show 
    @post = Post.find(params[:id) 
    respond_to do |w| 
     w.json { render :json => @post.to_json } 
    end 
    end 
end 
+0

+1:谢谢你的好例子。 – 2010-03-15 15:43:51