私は次のことをしたい: クライアント (別のドメインから、現在はローカル コンピューター上の JQuery-Script) が Ajax-Post をサーバーに送信し、サーバーは結果をサーバーに保存し、HTML/テキストを送信します。それを HTML に挿入するクライアント。
これは Ajax 呼び出しです。
var params = '{"comment": "Test", "creator": "Prof Frick", "name": "Rainer", "url": "' + url + '"}';
alert(params);
$.ajax({
type: "post",
data: params,
url: 'http://localhost:3000/pages/postjson/',
success: function(data) {
$('h1').html(data);
}
});
});
これは私のルートです:
match '/pages/postjson/' => 'pages#postjson'
そして、これはコントローラーです:
def postjson
parsed_json = ActiveSupport::JSON.decode(request.body.read) #
@page = Page.where(:url => parsed_json["url"])
new_obj = Page.new
new_obj.name = parsed_json["name"]
new_obj.creator = parsed_json["creator"]
new_obj.url = parsed_json["url"]
new_obj.comment = parsed_json["comment"]
new_obj.save
render :json => @page[:name]
end
私の間違いは非常に基本的なものだと思います。あなたの助けに本当に感謝しています。私の推測では、間違いは次のいずれかにある
@page = Page.where(:url => parsed_json["url"])
またはで
render :json => @page[:name]
すべてが完了するため、json-dataが保存され、ブラウザは「成功」と警告しますが、投稿したいものは消えます。
アドバイスありがとうございます。一般的なコーディングのヒントも常に高く評価されています!