Подтвердить что ты не робот

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

Теперь, помимо немного странного именования - перенаправления всегда приводят к 406 Не приемлемо. Что может быть неправильным?

4b9b3361

Ответ 1

Удалите блоки respond_to do |format|. Потому что вы не указываете, в каком формате вы отвечаете, например. format.html { #your code here }. Проверьте правильность использования respond_to.

Ответ 2

У меня была аналогичная ошибка, мой контроллер только отвечал на JSON. Мне было нужно, чтобы он отвечал на HTML также для того, чтобы тесты работали (что имеет смысл):

class AdsController < ApplicationController
  respond_to :json, :html

Я получил ошибку при попытке сделать: assert_redirected_to ad_url (ad)