Я пишу приложение, которое будет главным образом пользовательским интерфейсом, вызывающим бэкэнд-сервер через AJAX. Очень мало загрузок страниц.Как я могу очистить этот вызов AJAX от Padrino?
Так, например, когда я создаю поездку, мой 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
В настоящее время существует только два поля (название и описание), но будет около 4-8, когда сделано. Мне не нравится, как я строю новый объект поездки.
Я попытался с помощью:
@trip = Trip.build(params[:trip])
, но это не сработало.
Вот мой JS код, который отправляет POST:
// 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
Depends, Backbone - отличный выбор, но если логика приложения не такая сложная, лучше писать с нуля несколько строк js. Мой код «вживую» просматривает все ваши формы с атрибутами «data-remote» и преобразует их в запрос ajax. Это стандартный вызов rails-ujs/padrino-ujs, который всегда полезен. – DAddYE
Очень верно о Магистраль. Я на самом деле создаю форму index/new/edit на одной странице HTML, которую будет обслуживать nginx. Затем я скрою каждый раздел на основе того, что вы пытаетесь сделать. Кажется, что загрузка страницы мгновенная. :-) – cbmeeks