Ruby on rails Rails4:将非论坛数据从前端传递到后端,并对其进行处理
嗯。所以我有一个小的XHR请求,其中返回json。一旦成功,json就会像这样传递Ruby on rails Rails4:将非论坛数据从前端传递到后端,并对其进行处理,ruby-on-rails,ruby,ajax,ruby-on-rails-4,activerecord,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,返回的信
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语句
有人吗?您需要在控制器中处理json请求。有关详细信息,请查看此项 对于控制器中的一个快速示例,请创建一个新操作getnamefromid,并从客户端调用该控制器
respond_to do |format|
format.json { render :json => @shipName }
end
一个简单的解决方案可以是在船舶控制器上定义一个操作,并定义到它的路线,例如在routes.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
class ship_controller{name:@shipname}并返回
其他的
将_重定向到ship_路径(参数[:id])
结束
结束
........ #其他一些方法
结束
这并没有解释我如何确保“vShipTypeID”成功地从客户端进入activerecord语句。您需要向ships controller添加一个自定义操作getnamefromid,并使用该id从客户端调用该自定义操作,然后读取json响应。