2010-03-15 162 views
0

這可能是一個非常愚蠢的問題,但一個簡單的答案,但...AJAX與Ruby on Rails?

我正在一個項目,我需要使用AJAX發送/接收信息。我正在使用Ruby on Rails(我很新),而不是使用helper方法或默認Javascript文件中的內置功能,我需要在自己的Javascript中手動執行此操作。

我相信最終我會發送一個帶有JSON對象的請求,然後讓控制器返回另一個包含請求信息的JSON對象。

問題是,我似乎無法找到用於直接從Javascript發送某些特定控制器方法的參數的語法 - 我所有的Google結果都是使用Rails AJAX輔助方法的教程。

回答

1

如果使用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

4

根據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