[英]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.