0

レールで非常に基本的なフォームの更新を行っているときに 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 が false の場合も処理する必要があります。何かのようなもの、

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 に答える