簡體   English   中英

如何在Rails中將JSON數組與來自表單的數據一起發送?

[英]How to send JSON array together with data from form in Rails?

我的窗體視圖包含一些字段,而Google地圖帶有用於放置標記的工具。 我想附加到存儲為JavaScript JSON數組的請求標記坐標。 我將在填寫完所有字段后發送郵件,並通過單擊“僅發送”按鈕選擇標記所有數據。 由jQuery $(this).serialize()轉換的表單不被Rails接受。 說明材料:

JavaScript:

$('form').submit(function () {
    var url = $(this).attr('action');
    var data = { post: JSON.stringify(markersArray) };
    // var data = $(this).serialize();

    $.post(url, data, function(result) {
        //result
    });
    return false;
});

Rails控制器:

def create
  received_data = params[:post]

  markersArray = ActiveSupport::JSON.decode(received_data)

  #only JSON
  @post = Post.new(markersArray)

  #normal approach only form
  #@post = Post.new(received_data)
  @post.save
end

編輯

收到的JSON:

Parameters: {"post"=>"{\"markers\":[[52.40637,16.92517],[52.40601,16.925040000000003],[52.405750000000005,16.92493],[52.40514,16.92463],[52.404320000000006,16.924200000000003],[52.40393,16.92406]]}"}

收到表格:

Parameters: {
    "utf8"=>"✓", 
    "authenticity_token"=>"nehoT1fnza/ZW4XB4v27uZsfFjjOu/ucIhzMmMKgWPo=", 
    "post"=>{
         "title"=>"test", 
         "description"=>"fewfewfew"}, 
    "commit"=>"Save"}

您可以臨時添加一個隱藏字段,並在序列化后將其刪除:

$('form').submit(function () {
    var url = $(this).attr('action');
    var tempField = $('<input type="hidden" name="post" />').val(JSON.stringify(markersArray)).appendTo(this);
    var data = $(this).serialize();
    tempField.remove();

    $.post(url, data, function(result) {
        //result
    });
    return false;
});

或者您可以從反序列化的數據中發送一個對象,並附加您的發布數據

$('form').submit(function () {
    var url = $(this).attr('action');
    var data = jQuery.parseJson($(this).serialize());
    data.post =  JSON.stringify(markersArray) 


    $.post(url, data, function(result) {
        //result
    });
    return false;
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM