Rack-Flash sinatra问题

时间:2011-09-20 14:36:38

标签: ruby rack

我有一个小型的sinatra应用程序,我正在使用机架式闪存进行“未登录”警报。设置非常简单,检查会话并在没有会话时返回错误消息。

我发现整件事情很有气质。闪烁显示在我的本地服务器上,但根本没有显示在我的遥控器上。我已经通过代码和示例多次,似乎无法找到错误。路线和模板如下:

get '/item/new' do
  if session?
    erb :new_item
  else
    flash[:error] = 'not logged in'
    redirect '/'
  end
end

并且查看

<% if flash[:error] %>
  <div id="flash-message">
    <%= flash[:error] %>
  </div>
<% end %>

我有机架式闪存和会话设置:

use Rack::Flash, :sweep => true
use Rack::Session::Cookie

任何想法都非常感激。

3 个答案:

答案 0 :(得分:2)

您是否尝试过使用sinatra-flash?我没有真正尝试过机架式闪光灯,但sinatra-flash一直对我有用。

答案 1 :(得分:1)

从闪存中检索值时,会删除它。那么当你做“如果flash [:error]”你可能正在检索它?用吗?检查是否有东西。

答案 2 :(得分:1)

由于来自<FlashHash @values={} @cache={}>的{​​{1}}基本上是哈希,您只需使用rack-flash来检查是否存在密钥/消息。查看示例:

#has?

我知道这有点晚了,但我希望它有所帮助。