如何在rails上的ruby中发出ajax请求?

时间:2016-12-21 10:55:16

标签: jquery ruby-on-rails ruby ajax

你好我是刚刚开始学习的ruby on rails。我想知道如何制作ajax请求。 我的js代码:

$(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

4 个答案:

答案 0 :(得分:3)

一旦您通过js将数据发送到您的服务器,例如

$.post("/your/url",
{
    apiid: "1",
    apikey: "1",
    email: "some@email.com"
});

然后,您可以通过params hash访问控制器中的这些参数:

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

答案 1 :(得分: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: "some@email.com"
},
function(data, status){
    alert("Data: " + data + "\nStatus: " + status);
});

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

答案 2 :(得分:1)

您可以在隐藏字段中设置apiid,apikey和email,也可以稍后在formData属性中进行分配。 此处的所有数据均来自表单。 url是表单动作,method是表单中的动作集。

注意:.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'); });
}

希望这能解决您的问题。

答案 3 :(得分:1)

您可以使用jQuery ajax选项data在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
    })
  });  
});