Rails 3返回HTTP 406不可接受?

Nei*_*ton 45 routing ruby-on-rails

我有以下控制器代码:

  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
Run Code Online (Sandbox Code Playgroud)

以及以下路线:

           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"}
Run Code Online (Sandbox Code Playgroud)

现在,除了稍微笨拙的命名之外 - 重定向总是导致406不可接受.可能有什么不对?

ger*_*tas 81

删除respond_to do |format|块.因为您没有指定您响应的格式,例如format.html { #your code here }.检查respond_to如何正确使用它的文档.


rya*_*nes 10

我有一个类似的错误,我的控制器只响应JSON.我还需要它来响应HTML以使测试工作(这才有意义):

class AdsController < ApplicationController
  respond_to :json, :html
Run Code Online (Sandbox Code Playgroud)

我在尝试时收到错误:assert_redirected_to ad_url(ad)

  • 谢谢,这是导致406错误的原因. (2认同)