Я собрал функцию быстрого встроенного редактирования в своем первом приложении на Rails, и как только я начал работать, мне пришло в голову, что я нарушаю принципы RESTful. Редактирование обновило имя изображения. Для этого он отправляет через PUT
на Image#update
и передает новое измененное имя как image[name]
.
База данных обновляется должным образом, но мне нужно вернуть это значение, чтобы моя разметка могла отражать изменение имени. Для этого я звонил /images/:id.json
, но мне стало интересно, может ли запрос PUT "правильно" (таким способом RESTful) вернуть значение, подобное этому.
Мысли
Обновление: Для чего бы то ни было, я использую jQuery и плагин jEditable для редактирования в строке. Вот мой код jEditable:
$(document).ready( function() {
$('h2').editable(
'/images/' + $('#image-id').val() + '.json',
{
method: 'PUT',
name: 'image[name]',
submitdata: { authenticity_token: $('#auth-token').val() },
submit: 'Save',
cancel: 'Cancel'
}
);
})
И мой Image#update
метод, как он существует сейчас:
def update
@image = Image.find( params[:id] )
if @image.update_attributes( params[:image] )
flash[:notice] = "Successfully updated image."
respond_to do |format|
format.html { redirect_to @image }
format.json { render :json => @image.to_json }
end
else
render :action => 'edit'
end
end