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