Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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?

like image 754
Jonathan Bender Avatar asked Oct 25 '13 23:10

Jonathan Bender


2 Answers

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

like image 188
Marcio Junior Avatar answered Sep 21 '22 06:09

Marcio Junior


See: https://github.com/plataformatec/devise/issues/2775

Inside devise.rb change

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

to:

config.navigational_formats = [:json] 

or just [ ]

like image 29
cbron Avatar answered Sep 21 '22 06:09

cbron