web-dev-qa-db-ja.com

Rails 3 HTTP 406 Not Acceptableを返しますか?

次のコントローラーコードがあります。

  def create
    @admin = Admin.new(params[:admin])
    respond_to do |format|
      if @admin.save
        redirect_to(@admin, :notice => 'Admin was successfully created.')
      else
        render :action => "new"
      end
    end
  end

  def update
    @admin = Admin.find(params[:id])
    respond_to do |format|
      if @admin.update_attributes(params[:admin])
        redirect_to(admin_admins_path, :notice => 'Admin was successfully updated.')
      else
        render :action => "edit"
      end
    end
  end

および次のルート:

           admin_admins GET    /admin/admins(.:format)            {:action=>"index", :controller=>"admin/admins"}
           admin_admins POST   /admin/admins(.:format)            {:action=>"create", :controller=>"admin/admins"}
        new_admin_admin GET    /admin/admins/new(.:format)        {:action=>"new", :controller=>"admin/admins"}
       edit_admin_admin GET    /admin/admins/:id/edit(.:format)   {:action=>"edit", :controller=>"admin/admins"}
            admin_admin GET    /admin/admins/:id(.:format)        {:action=>"show", :controller=>"admin/admins"}
            admin_admin PUT    /admin/admins/:id(.:format)        {:action=>"update", :controller=>"admin/admins"}
            admin_admin DELETE /admin/admins/:id(.:format)        {:action=>"destroy", :controller=>"admin/admins"}

さて、ちょっと奇抜な名前付けは別として-リダイレクトは常に406 Not Acceptableになります。何が間違っているのでしょうか?

45
Neil Middleton

削除する respond_to do |format|ブロック。応答する形式を指定していないため、 format.html { #your code here }respond_to のドキュメントを適切に使用する方法を確認してください。

81
gertas

同様のエラーが発生しました。コントローラーはJSONにのみ応答していました。テストが機能するためにもHTMLに応答する必要がありました(これは理にかなっています)。

class AdsController < ApplicationController
  respond_to :json, :html

実行しようとしたときにエラーを受け取りました:assert_redirected_to ad_url(ad)

10
ryanjones

本番環境にデプロイした後にこの問題が発生し始めましたが、開発では困難なすべてがうまく機能していました。

約15分の時間の無駄の後、最終的にview.file(index.html.erbなど)をコミットするのを忘れていましたであることがわかりました。

サーバー上でtail -f log/production.logを使用すると明らかになりました:FATAL -- : ActionController::UnknownFormat (SomeController#index is missing a template for this request format and variant.

開発では、明らかにビューファイルが存在したため、エラーは発生しませんでした。

0
sandre89