Search code examples
ruby-on-railsruby-on-rails-4rails-api

Rails: Undefined method `flash' for ActionDispatch::Request


I'm trying to write an Ember application in Rails 4, and have decided to go with rails-api for the api controllers, while keeping the application controller intact for a few pages that aren't part of the single-page app. To put it in more concrete terms, here are my controllers:

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 contains the following line:

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

The inclusion of which results in the following error:

undefined method 'flash' for #< ActionDispatch::Request:0x007f99f41d8720 >

Per discussion on this thread, it seems that the culprit could be rails-api, but I'm not entirely convinced given the inheritance I've set up. Any suggestions?


Solution

  • Not sure but maybe you need to include the ActionDispatch::Flash middleware to support the flash. Using:

    config.middleware.use ActionDispatch::Flash
    

    The docs says:

    ActionDispatch::Flash: Supports the flash mechanism in ActionController.

    I hope it helps