簡體   English   中英

通過內聯編輯調用Rails更新方法

[英]Calling Rails update Method via Inline Edit

我在我的第一個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

如果您只是擔心使用JSON的更新方法提供響應正文而不只是200 OK (Rails的head :ok ),那么我認為您不必擔心。 默認響應為200 OK因此您正在執行的操作與默認情況下(在其腳手架中)Rails所做的操作之間的唯一區別是您還包括一個響應正文。 據我所知,正確的REST禮節僅要求您返回200 OK ,並且不關心響應主體,這與您正在執行的操作一致。

除此之外,您的所有代碼看起來都很棒。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM