私は、AJAX を介してバックエンド サーバーを呼び出すほとんどの UI になるアプリを作成しています。ページの読み込みはほとんどありません。
たとえば、旅行を作成すると、JS は JSON オブジェクトを Padrino に (POST 経由で) 送信するだけで、Padrino は旅行オブジェクトを (ActiveRecord 経由で) 保存し、JSON 応答を返します。
うまくいくようですが、コードをクリーンアップするだけでなく、送信された値をサニタイズしたいと考えています。
これが私のPOST
コードです(trips controller
)
post :index, :provides => :json do
response = {}
response[:trip] = {}
begin
@trip = Trip.new
@trip.title = params[:trip][:title]
@trip.description = params[:trip][:title]
if @trip.save
response[:status] = "Success"
response[:trip] = {:title => @trip.title, :description => @trip.description}
response[:message] = "#{@trip.title} successfully saved"
else
response[:status] = "Error"
response[:message] = "Error saving trip"
end
rescue
response[:status] = "Error"
response[:message] = "Error saving trip"
end
response.to_json
end
現在、2 つのフィールド (タイトルと説明) しかありませんが、完了すると約 4 ~ 8 になります。新しい trip オブジェクトの作成方法が気に入りません。
私は使用してみました:
@trip = Trip.build(params[:trip])
しかし、それはうまくいきませんでした。
POSTを送信するJSコードは次のとおりです。
// Save new trip
$("#new_trip_save_btn").click(function() {
var self = this;
var new_trip = get_new_trip();
$.ajax({
data: {trip:new_trip},
dataType: "json",
url: "/trips",
type: "post",
success: function(res) {
console.log(res)
}
});
});
......
var get_new_trip = function() {
var self = this;
var trip = {};
trip.title = $("#new_trip_title").val();
trip.description = $("#new_trip_description").val();
trip.departure_date = $("#new_trip_departure").val();
trip.return_date = $("#new_trip_return").val();
return trip;
}
では、コードをクリーンアップ (POST アクションの冗長性を削除) し、保存する前にテキストが確実にサニタイズされるようにするにはどうすればよいでしょうか。
ありがとう