Вызов метода Rails для обновления через встроенное редактирование - PullRequest
1 голос
/ 05 октября 2009

Я собрал функцию быстрого встроенного редактирования в своем первом приложении на 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

1 Ответ

0 голосов
/ 06 октября 2009

Если вас беспокоит то, что ваш метод обновления с JSON предоставляет тело ответа, а не просто 200 OK (Rails head :ok), тогда я не думаю, что вам нужно беспокоиться. Ответ по умолчанию - 200 OK, поэтому единственная разница между тем, что вы делаете, и тем, что Rails делает по умолчанию (в своих скаффолдах), заключается в том, что вы также включаете тело ответа. Насколько я могу судить, правильный этикет REST требует только, чтобы вы вернули 200 OK и не заботились о теле ответа, что соответствует тому, что вы делаете.

Кроме того, весь ваш код выглядит превосходно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...