rails 4重定向后丢弃的flash会话

时间:2015-08-30 06:19:22

标签: ruby-on-rails flash

据我所知,闪存应存储在会话中,

我已经清除了浏览器缓存,并重启了rails服务器。

闪光灯无法正常工作。即使我使用flash.keep它根本不起作用。

我在哪里错过了?

我在root_path方法中发现,我检查了会话变量

闪光灯被丢弃了,我对此一无所知。

调试控制台

[1] pry(#<WelcomeController>)> session
{
    "_csrf_token" => "y+QzSyv23dzSWEcf+9D+i49zkC748j++gwFVjafN7A0=",
          "flash" => {
        "discard" => [
            [0] "alert",
            [1] "error"
        ],
        "flashes" => {
            "alert" => "尚未有該航線資訊,請選擇不同出發地與目的地或者日期",
            "error" => "Insufficient rights!"
        }
    }
}

initailize / session_store.rb

Rails.application.config.session_store :cookie_store, key: '_websites_session'

flash.html.haml

- flash.each do |name, msg|
  = content_tag :div, msg.html_safe, class: "panel-title panel-info"

controller.rb

  flash[:alert] = t('no_available_routes')
  redirect_to root_url, :notice => "Successfully checked in"  

development.rb

  config.action_controller.perform_caching = false
  # config.cache_store = :mem_cache_store
  config.cache_store = :dalli_store, ENV['MEMCACHE_DB'], { :pool_size => 10 ,compress: true }

1 个答案:

答案 0 :(得分:0)

我的问题找到了一个丑陋的解决方法,

我仍然可以在视图中获取会话中的Flash数据,

但我仍然想知道如何在我的情况下使用正常的flash变量

由于

- if session["flash"]
  -  session["flash"]["flashes"].each do |name, msg|
    - if 'alert' == name
      = content_tag :div, msg.html_safe, class: "panel-warning"
    - else
      = content_tag :div, msg.html_safe, class: "panel-info"