【问题标题】:Sinatra turns a blind eye to gem?Sinatra 对 gem 视而不见?
【发布时间】:2012-10-25 21:18:21
【问题描述】:

我正在使用 Sinatra + rack-flash3 gem。我安装了它,但尽管如此,它还是引发了异常。这是layout.haml

!!!5
%html
  %body
    .my_div
      != haml :"shared/_flash"
      != yield

和_flash.haml

.my-div2
  .flash-notice
    - if flash[:notice]
      .alert.alert-success
        = flash[:notice]
    - if flash[:error]
      .alert.alert-error
        = flash[:error]
    - if flash[:info]
      .alert.alert-info
        = flash[:info]

错误是

undefined local variable or method `flash' for #<App:0x00000004226c90>
file: _flash.haml location: evaluate_source line: 3

我想知道为什么会这样?

【问题讨论】:

    标签: ruby gem sinatra


    【解决方案1】:

    您是否已将 rack-flash3 正确地包含到您的 sinatra 应用程序中?你必须在你的应用顶部use Rack::Flash,像这样:

    require 'sinatra/base'
    require 'rack-flash'
    
    class MyApp < Sinatra::Base
      enable :sessions
      use Rack::Flash
    
      post '/set-flash' do
        # Set a flash entry
        flash[:notice] = "Thanks for signing up!"
    
        # Get a flash entry
        flash[:notice] # => "Thanks for signing up!"
    
        # Set a flash entry for only the current request
        flash.now[:notice] = "Thanks for signing up!"
      end
    end
    

    来源:http://rubydoc.info/gems/rack-flash3/1.0.1/frames

    【讨论】:

    • 我遇到了同样的问题,但无法正常工作。完全按照你说的做了,但是没有用。非常感谢任何帮助。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-07-07
    • 1970-01-01
    • 1970-01-01
    • 2014-04-02
    • 2011-11-10
    • 1970-01-01
    相关资源
    最近更新 更多