Ответ 1
Удалите блоки respond_to do |format|
. Потому что вы не указываете, в каком формате вы отвечаете, например. format.html { #your code here }
.
Проверьте правильность использования respond_to.
У меня есть следующий код контроллера:
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 Не приемлемо. Что может быть неправильным?
Удалите блоки respond_to do |format|
. Потому что вы не указываете, в каком формате вы отвечаете, например. format.html { #your code here }
.
Проверьте правильность использования respond_to.
У меня была аналогичная ошибка, мой контроллер только отвечал на JSON. Мне было нужно, чтобы он отвечал на HTML также для того, чтобы тесты работали (что имеет смысл):
class AdsController < ApplicationController
respond_to :json, :html
Я получил ошибку при попытке сделать: assert_redirected_to ad_url (ad)