1
JavaScriptはビューフィールドをシリアライズし、データをポストするためにウェイポイント配列を追加します。コントローラ内の各パラメータは別々にGeoオブジェクトに追加され、ウェイポイントパラメータに遭遇し、配列に解析されます。これらのパラメータを取得し、それを解析して通常の手法を使用できるようにするフィルタを実行できるかどうか今度は、Geo.new(params [:geo])の通常のアプローチでは、Fieldは配列として定義されていますが、値は "[\" Paris、France \ "、\" Stuttgart、ドイツ\"]"。)。Railsフィルタを使用してシリアル化されたパラメータとは別にJSON文字列を解析する方法
コントローラー:
def create
@geo = Geo.new
@geo.waypoints = JSON.parse params[:geo][:waypoints] if params[:geo][:waypoints].is_a? String
@geo.description = params[:geo][:description]
@geo.start = params[:geo][:start]
@geo.end = params[:geo][:end]
@geo.save
redirect_to geo_path(@geo), :notice => "Geo successfully submitted."
end
JS:
$('form').submit(function() {
var waypoints = ["Paris, France", "Stuttgart, Deutschland"]
var url = $(this).attr('action');
var waypoints_temp_field = $('<input type="hidden" name="geo[waypoints]" />').val(JSON.stringify(waypoints)).appendTo(this);
var postdata = $(this).serialize();
$.post(url, postdata, function (callback) {
// callback
}, "json");
return false;
});
ありがとうございました。そのような単純な解決策と私は多くの時間を失った。 – roza