2009-10-05 58 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