2009-10-05 71 views
1

我在我的第一個Rails應用程序中整合了一個快速內聯編輯功能,並且正如我開始工作一樣,我想我可能違反了RESTful原則。編輯更新了圖像名稱。爲此,它通過PUT提交至Image#update,並將新的修改名稱傳遞爲image[name]通過內聯編輯調用Rails更新方法

數據庫得到正確更新,但我需要這個值,以便我的標記可以反映名稱更改。爲此,我打電話給/images/:id.json,但這讓我想知道PUT請求是否可以「有效地」(以這種RESTful方式)返回這樣的值。

想法?

更新:無論它值什麼,我都使用jQuery和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方法現在:這是我的jEditable代碼

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 
+0

我認爲你最關心的是來自你的更新JSON的響應是圖像,而不僅僅是一個'head:ok'。那是對的嗎? – 2009-10-06 00:43:21

+0

正確。更新圖像名稱後,我需要返回新名稱,以便我可以顯示它。如果我什麼都不返回,jEditable似乎只是清空這個領域。 – 2009-10-06 01:12:19

回答

0

如果您關注的僅僅是使用JSON的更新方法提供一個響應主體,而不僅僅是一個200 OK( Rails的head :ok),那麼我認爲你不需要擔心。默認響應是200 OK,所以你正在做的和默認情況下(在它的腳手架上)Rails做的唯一區別是你還包括一個響應主體。據我所知,適當的REST禮儀只要求你返回一個200 OK而不關心響應主體,這與你所做的一致。

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

+0

謝謝。我不想過於迂腐或者對於RESTful來說是清教徒,但是我希望能夠在可以的情況下拍攝純粹的東西,並且在我需要的地方縮小比例。 – 2009-10-06 01:14:09

相關問題