2016-12-21 86 views
1

你好,我刚刚开始学习Ruby on Rails。我想知道我该如何制作ajax请求。 我的js代码:如何在rails上制作红宝石的ajax请求?

$(document).ready(function(){ 
    $(".form_submit").click(function() { 
     var apiid = $('#apiid').val(); 
     var apikey = $('#apikey').val(); 
     var email = $('#email').val(); 
      console.log("apiid = ",apiid , " apikey = ",apikey , " email = ",email); 

    }); 
}); 

现在我想给apiid,apikey和电子邮件到我的控制器。

def api 
//here I want apiid, apikey,email from js 
end 
+1

还有人互联网上的教程和指南,你尝试过什么吗? –

回答

3

一旦你通过JS将数据发送到服务器的东西,如

$.post("/your/url", 
{ 
    apiid: "1", 
    apikey: "1", 
    email: "[email protected]" 
}); 

然后你可以通过params哈希在控制器中访问这些参数:

def api 
    params[:apiid] 
    params[:apikey] 
    params[:email] 
end 
1

假设您已经在您的Rails服务器上安装了RESTful API,那么您只需发送Ajax请求即可。如果你还没有这样做,本教程将教你如何做到这一点。

https://www.codementor.io/ruby-on-rails/tutorial/creating-simple-api-with-rails

后,所有你需要做的就是:

$.post("/path/to/url", 
{ 
    apiid: "1", 
    apikey: "1", 
    email: "[email protected]" 
}, 
function(data, status){ 
    alert("Data: " + data + "\nStatus: " + status); 
}); 

第一个参数是路由端点,第二个参数是你的JSON数据,第三个参数是一个回调函数,在服务器完成更新时执行。

1

您可以在隐藏字段中设置apiid,apikey和电子邮件,也可以稍后在formData属性中进行分配。 这里的所有数据都是从表单中抓取的。 url是表单动作,方法是在表单中设置的动作。

注意:.form_submit是一个窗体不是按钮的类。

$('.form_submit').submit(function(e){ 
    e.preventDefault(); 
    var remoteCall = new RemoteCall(this); 
    remoteCall.ajax() 
    }) 
function RemoteCall(element){ 
    this.url = element.action; 
    this.method = element.method; 
    this.dataType = 'json'; 
    this.formData = $(element).serialize() 
} 
RemoteCall.prototype.ajax = function(){ 
    $.ajax({ method: this.method, 
      url: this.url, 
      data: this.formData, 
      dataType: 'json' 
      }).done(function(msg){ 
      alert('done'); 
      }).fail(function(msg){ alert('Sorry request could not complete'); }); 
} 

希望这会解决您的问题。

+0

我想知道如何在控制器中获取数据,比如在php中我们使用'$ _POST ['apiid']'来获取数据,所以在红宝石中如何获取控制器中的数据? –

+1

要访问控制器中提交的表单数据,您可以使用参数。举个例子,如果你发送post请求作为apiid:'sad'by ajax。你可以作为params [:apiid]访问。如果您不知道字段名称是什么,您可以检查参数以查看所有表单数据。 –

1

您可以使用jQuery ajax选项data发送PARAMS在一个Ajax请求:

$(document).ready(function(){ 
    $(".form_submit").click(function() { 
    var apiid = $('#apiid').val(); 
    var apikey = $('#apikey').val(); 
    var email = $('#email').val(); 

    $.ajax(path_to_api_action, { 
     data: { apiid: apiid, apikey: apikey, email: email } 
     // Add other options 
    }) 
    }); 
});