Rails4:将非论坛数据从前端传递到后端,并对其进行处理

时间:2015-10-18 05:58:47

标签: ruby-on-rails ruby ajax ruby-on-rails-4 activerecord

确定。所以我有一个小的XHR请求,返回json。成功时,json会像这样传递。

var myArr = JSON.parse(xmlhttp.responseText);
myMainFunction(myArr);

function myMainFunction(arr) {
    var vShipTypeID = arr[0].victim.shipTypeID;
    }

我需要将 vShipTypeID 发送到rails。我的目标是将此值发送回activerecord,返回的信息将在js或json文件中传入控制器中的 respond_to 语句。

@shipName = InvType.find(vShipTypeID).name

这是主要想法。客户将船的ID发送给rails,rails返回该船的名称。

我知道如何发出Ajax请求。

我不知道如何在服务器端处理请求。 rails接收数据后的含义,我在哪里找到它,以及如何将其转换为可用,以便我可以从客户端收到的值中生成一个activerecord语句?

任何?

2 个答案:

答案 0 :(得分:0)

您需要在控制器中处理json请求,请查看此question了解详细信息

为控制器中的快速示例创建一个新操作getnamefromid并从您的客户端调用该控制器。

respond_to do |format|
  format.json  { render :json => @shipName }
end

答案 1 :(得分:0)

一个简单的解决方案可能是在您的船舶控制器上定义一个动作并定义一条路线,例如在您的路线中定义路线.rb

get "/ship/:id/getname" => "ship#getname"

在您的js文件中

$.get( "/ship/"+vShipID+"/getname")
  .done(function(data) {
    alert( "Ship name: " + data.name );
  })
  .fail(function() {
    alert( "error" );
  });
你在ship_controller.rb

中的

class ship_controller <ApplicationController
     ....... #other methods
     def getname
         @shipname = Ship.find(params[:id]).name
         if request.xhr
            render :json => {name: @shipname} and return
         else
            redirect_to ship_path(params[:id])
         end
     end
     ........ #some other methods
end