tutorial rails mvc descargar code blog ruby-on-rails ruby-on-rails-4 rails-api

ruby on rails - rails - Método indefinido `flash ''para ActionDispatch:: Request



ruby on rails tutorial (3)

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

Dentro devise.rb cambiar

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

a:

config.navigational_formats = [:json]

o solo [ ]

Estoy tratando de escribir una aplicación Ember en Rails 4, y he decidido ir con rails-api para los controladores api, mientras mantengo el controlador de la aplicación intacto para algunas páginas que no forman parte de la aplicación de una sola página. Para ponerlo en términos más concretos, aquí están mis controladores:

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

Mi application.html.slim contiene la siguiente línea:

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

La inclusión de lo que resulta en el siguiente error:

método ''flash'' indefinido para # <ActionDispatch :: Request: 0x007f99f41d8720>

Por discusión en este hilo , parece que el culpable podría ser rails-api , pero no estoy del todo convencido dada la herencia que he establecido. ¿Alguna sugerencia?


No estoy seguro, pero tal vez deba incluir el middleware ActionDispatch::Flash para admitir el flash. Utilizando:

config.middleware.use ActionDispatch::Flash

La docs dice:

ActionDispatch :: Flash: admite el mecanismo de flash en ActionController.

Espero que ayude


Si eres como yo y estás creando una API sobre una aplicación existente, puedes agregar esto a tu archivo config / application.rb:

config.api_only = false