неопределенный метод '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

Мой application.html.slim содержит следующую строку:

== render partial: "flash_msgs" unless flash.blank?

Включение которого приводит в следующей ошибке:

Неопределенный метод 'flash' для #

Согласно обсуждению в этой теме, кажется, что виновником может быть rails-api, но я не совсем уверен, учитывая наследование, которое я установил. Есть предложения?

3 19

3 ответа:

Не уверен, но, возможно, вам нужно включить промежуточное по ActionDispatch::Flash Для поддержки flash. Использование:

config.middleware.use ActionDispatch::Flash

The docs говорит:

ActionDispatch:: Flash: поддерживает механизм вспышки в ActionController.

Надеюсь, это поможет

См.: https://github.com/plataformatec/devise/issues/2775

Внутри изобрести.изменение rb

config.navigational_formats = ['*/*', :html]

Кому:

config.navigational_formats = [:json]

Или просто [ ]

Если вы, как и я, создаете API поверх существующего приложения, вы можете добавить его в свою конфигурацию/приложение.файл rb:

config.api_only = false