0
Rails 4とネイティブJavascript(バニラ)を使用しています。JavascriptオブジェクトをRailsコントローラに送信
私はplace
オブジェクトを返し、次のAjax呼び出し、持っている:console.log(JSON.stringify(place))
で
// place.js
function addPlace(place) {
console.log(JSON.stringify(place));
var xhr = new XMLHttpRequest();
xhr.open("POST", "<%= Rails.application.routes.url_helpers.places_path %>", true);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded; charset=UTF-8");
xhr.setRequestHeader("X-CSRF-Token", CSRF.token());
xhr.send("place=" + JSON.stringify(place));
}
を、私は次のJSONを取得する:
{"name":"San Francisco","url":"https://maps.google.com/?q=San+Francisco,+CA,+USA&ftid=0x80859a6d00690021:0x4a501367f076adff","utc_offset":-480,"vicinity":"San Francisco","html_attributions":[]}
これはparamsはRailsのコントローラに送信されます。
# places_controller.rb
class PlacesController < ApplicationController
def create
abort params[:place].inspect
@place = Place.find_or_create_by(source_id: params[:source_id])
@place.save
head :ok
end
end
abort params[:place].inspect
は、全体ではなく、負荷を示すのではなく、のみを示しています。
"{"name":"San Francisco","url":"https://maps.google.com/?q=San+Francisco,+CA,+USA"
url
が原因&ftid=0x80859a6d00690021:0x4a501367f076adff
で&
の剥がします。
質問
どのように私はきちんと私が正しくDBに保存することができるようにコントローラをレールにJavaScriptオブジェクト(好ましくはハッシュ)を渡す必要がありますか?