Undefined метод `flash 'для ActionDispatch:: Request
Я пытаюсь написать приложение Ember в Rails 4 и решил пойти с rails-api
для контроллеров api, сохранив при этом контроллер приложения на несколько страниц, которые не являются частью одностраничного приложение. Чтобы выразить это более конкретно, вот мои контроллеры:
app/controllers/application_controller.rb
:
class ApplicationController < ActionController::Base
protect_from_forgery
end
app/controllers/sample_controller.rb
:
class SampleController < ApplicationController
# my methods
end
app/controllers/api/v1/api_controller.rb
:
class Api::V1::ApiController < ActionController::Api
include ActionController::MimeResponds
end
app/controllers/api/v1/sample_controller.rb
:
module Api::V1
class SampleController < ApiController
respond_to :json
# my methods
end
end
My application.html.slim
содержит следующую строку:
== render partial: "flash_msgs" unless flash.blank?
Включение которых приводит к следующей ошибке:
undefined метод 'flash' для # < ActionDispatch:: Request: 0x007f99f41d8720 >
В обсуждении в этом потоке кажется, что виновником может быть rails-api
, но я не полностью убежден в том, что я наследовал наследование. Любые предложения?
Ответы
Ответ 1
Не уверен, но, возможно, вам нужно включить промежуточное программное обеспечение ActionDispatch::Flash
для поддержки Flash. Использование:
config.middleware.use ActionDispatch::Flash
docs говорит:
ActionDispatch:: Flash: поддерживает механизм вспышки в ActionController.
Я надеюсь, что это поможет
Ответ 2
Если вы похожи на меня и создаете API поверх существующего приложения, вы можете добавить его в свой файл config/application.rb:
config.api_only = false
Ответ 3
Смотрите: https://github.com/plataformatec/devise/issues/2775
Внутри devise.rb изменить
config.navigational_formats = ['*/*', :html]
в
config.navigational_formats = [:json]
или просто []