我在我的第一个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
答案 0 :(得分:0)
如果您只关心使用JSON的更新方法提供响应正文而不只是200 OK
(Rails的head :ok
),那么我认为您不必担心。默认响应为200 OK
,因此您正在执行的操作与Rails默认执行的操作(在其支架中)之间的唯一区别在于您还包括响应正文。据我所知,正确的REST礼仪只要求你返回一个200 OK
而不关心响应体,这与你正在做的事情是一致的。
除此之外,您的所有代码都非常出色。