0

有没有人在 Rails 中进行非常基本的表单更新时遇到 406 错误?对象已更新,但重定向失败。我已经尝试将格式指定为 HTML 以及删除respond_to do |format|根据它正在更新为 HTML 的日志ItemsController#update as HTML

我确定我只是忽略了一些愚蠢的事情,但一直在努力解决这个问题。我不想通过 ajax 更新或访问 JSON。我尝试过使用标准respond_to do |format|并指定 HTML 以及respond_to do |format|完全删除。应用程序中的其余对象都可以编辑,没有这个问题。

在路线中

 resources :items

在控制器中

def update
    @item = Item.find(params[:id])
    if @item.update_attributes(params[:item])
         redirect_to @item
    end
end

在视图中

<%= form_for(@item) do |f| %>

     <%=f.text_field(:name)%>

     <div class="actions">
          <%= f.submit %>
     </div>
<% end %>
4

2 回答 2

1

您的更新操作还需要处理 update_attributes 为假的情况。就像是,

def update
  @item = Item.find(params[:id])
    if @item.update_attributes(params[:item])
      redirect_to @item
    else
      render 'edit'
    end
end
于 2012-08-13T11:32:36.293 回答
0

作为 Shailen Tuli 答案的替代方案,请使用

@item.update_attributes!(params[:item])

(注意!)如果无法保存,它将产生错误。

406 主要意味着:Rails 没有任何东西可以发送回客户端,并且在您的情况下,当保存失败时会发生这种情况。

于 2012-08-13T12:02:26.760 回答