[英]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.