我有以下控制器代码:
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不可接受。可能有什么不对?
答案 0 :(得分:81)
删除respond_to do |format|
块。因为您没有指定要响应的格式,例如format.html { #your code here }
。
检查respond_to如何正确使用它的文档。
答案 1 :(得分:10)
我有类似的错误,我的控制器只响应JSON。我还需要它来响应HTML以使测试工作(这才有意义):
class AdsController < ApplicationController
respond_to :json, :html
我在尝试时收到错误:assert_redirected_to ad_url(ad)
答案 2 :(得分:0)
在生产中部署之后,我开始遇到这个问题,即使艰难的情况下,在开发中一切正常。
在浪费了15分钟之后,我终于发现我忘记提交某些视图文件(例如index.html.erb)。
在服务器上使用tail -f log/production.log
显示:FATAL -- : ActionController::UnknownFormat (SomeController#index is missing a template for this request format and variant.
在开发中未发生错误,因为显然存在视图文件。