0

我正在尝试使用goog.net.XhrIoClosure 库中的 Ajax 调用。我想在 Post 请求中发送一些参数,并将它们提供给 Rails 应用程序。这是我的 Ajax 调用:

goog.require('goog.net.XhrIo');
goog.require("goog.structs.Map");
goog.require("goog.Uri.QueryData");

function doRequest() {

    var request = new goog.net.XhrIo();

    var qd = goog.Uri.QueryData.createFromMap(new goog.structs.Map({
        title: "Test ajax data",
        content: "foo",
        param1: 70
    }));

    goog.events.listen(request, goog.net.EventType.COMPLETE, function(){
        console.log("Success!");
    });
    request.send('http://localhost:3000/some_method', 'POST', qd.toString());

}

然后在 Rails 中:

def some_method
  @my_variable = ModelName.find(params[????])
end

问题是我不知道如何访问 Rails 应用程序中的参数。我什至不确定我是否正在执行 Post 请求,以便参数易于访问。

4

1 回答 1

0

我不确定这是最好的方法,但这最终奏效了。

JavaScript:

goog.require('goog.net.XhrIo');
var updateQuizStats = function(result) {
    var request = new goog.net.XhrIo();
    goog.events.listen(request, goog.net.EventType.COMPLETE, function(){
        console.log("YES! YES! YES!");
    });
    request.send('http://localhost:3000/some_method/'+param1+'/'+param2);
}

铁路路线.rb:

match '/some_method/:param1/:param2', :to => 'controller_name#some_method'

在控制器中:

def some_method
  @my_variable = ModelName.find(params[:param1])
  @my_variable.update_attributes(:some_attribute => params[:param2])
end

很想听听是否有更好的方法来做到这一点。

于 2013-09-22T10:12:22.937 回答