我在我的第一个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
我认为你最关心的是来自你的更新JSON的响应是图像,而不仅仅是一个'head:ok'。那是对的吗? – 2009-10-06 00:43:21
正确。更新图像名称后,我需要返回新名称,以便我可以显示它。如果我什么都不返回,jEditable似乎只是清空这个领域。 – 2009-10-06 01:12:19