Rails 3返回HTTP 406不可接受?

我有以下控制器代码:

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"} 

现在,除了稍微有些怪异的命名之外,redirect总是会导致406不被接受。 什么可能是错的?

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

我有一个类似的错误,我的控制器只响应JSON。 我也需要它来响应HTML也为testing工作(这只有意义):

 class AdsController < ApplicationController respond_to :json, :html 

我试图执行时收到错误:assert_redirected_to ad_url(ad)