Я пытаюсь обновить запись удаленно (через ajax) и получить ответ, который включает в себя сериализованную запись, но я постоянно получаю xhr.responseText = {}. Я хотел бы получить сериализованную версию обновленной записи.Rails response_with неправильно работает с json
Вот мой взгляд форма ...
=semantic_form_for theme, :html => {'data-type' => 'json', :id => :theme_display_type_form, :remote => true} do |form|
-form.inputs do
=form.input :display_type
контроллер, который обрабатывает ...
respond_to :html, :json
... other actions...
def update
flash[:success] = "Theme was successfully updated" if theme.update_attributes params[:theme]
respond_with(theme)
end
, а затем ответ пойманы rails.js АЯКС: успех событие
$('#theme_display_type_form').bind('ajax:success', function(evt, data, status, xhr){
var responseObject = $.parseJSON(xhr.responseText);
alert(xhr.responseText); // = {}
alert(responseObject); // = null
});
Должно быть, что-то не хватает. Может ли кто-нибудь сообщить мне, что я делаю неправильно?
EDIT
Похоже, что может быть возникли проблемы с 'respond_with', как с использованием старого метода respond_to в мой контроллер работает правильно ...
def update
flash[:success] = "Theme was successfully updated" if theme.update_attributes params[:theme]
respond_to do |format|
format.json { render :json => theme }
end
end
У кого-нибудь есть идеи, почему response_with не работает должным образом?
ОТВЕТ
согласно маяка размещения на https://rails.lighthouseapp.com/projects/8994/tickets/5199-respond_with-returns-on-put-and-delete-verb
это нормально, что UPDATE будет возвращать не объект, так как у вас уже есть объект в вашем распоряжении ..