【问题标题】:Rails4: Passing non-forum data from front end to the back end, and processing itRails4:将非论坛数据从前端传递到后端,并进行处理
【发布时间】:2015-10-18 05:58:46
【问题描述】:

好的。所以我有一个小的 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 语句?

有人吗?

【问题讨论】:

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


    【解决方案1】:

    一个简单的解决方案可能是在您的船舶控制器上定义一个操作并定义一个到它的路线,例如在您的 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
    

    【讨论】:

      【解决方案2】:

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

      在您的控制器中创建一个新操作 getnamefromid 并从您的客户端调用该控制器。

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

      【讨论】:

      • 这并没有解释我如何确保“vShipTypeID”成功进入客户端的 activerecord 语句。
      • 您需要添加一个自定义操作,getnamefromid 到运送控制器,并使用 id 从您的客户端调用该自定义操作并读取 json 响应。
      猜你喜欢
      • 2020-07-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-06-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-11-12
      相关资源
      最近更新 更多