私は主にAJAX経由でバックエンドサーバーを呼び出すUIとなるアプリケーションを書いています。ページがほとんど読み込まれません。このPadrino AJAXコールをクリーンアップするにはどうすればよいですか?
たとえば、旅行を作成すると、JSはJSONオブジェクトをPadrinoに(POST経由で)送信し、PadrinoはTripオブジェクトを(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.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アクションで冗長性を削除)して、テキストを保存する前に消毒されていることを確認するために何ができますか。
おかげ
感謝。しかし、私の論理は、静的ページをnginxでレンダリングし、単にPadrinoをバックエンドとして使用することです。私はJSのUIに多くの時間を費やすので、JSはアクセスを意味しません。いくつかの人々は好きではない。しかし、来て...それは2012年です。笑。カスタムJS ajax投稿をBackboneに置き換えることについてのあなたの考えは? – cbmeeks
に依存しますが、バックボーンは最適な選択ですが、アプリのロジックがあまり複雑でない場合は、最初から数行のjを書き込む方が良いでしょう。私のコード 'live'は、すべてのフォームを 'data-remote'属性で監視し、それをajaxリクエストに変換します。それは常に有用な「標準的な」rails-ujs/padrino-ujs呼び出しです。 – DAddYE
バックボーンについては非常に真実です。私は実際には、nginxが提供する1つのHTMLページで、インデックス/新規/編集フォームをレンダリングしています。私はあなたがしようとしていることに基づいて各セクションを隠します。ページの読み込みが瞬時に表示されるようにします。 :-) – cbmeeks