rails中基本HTML更新期间出现406错误(不是jQuery,AJAX或JSON)

时间:2012-08-13 03:23:05

标签: ruby-on-rails ruby-on-rails-3

在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 %>

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

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

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

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

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