【问题标题】:Flash message not displaying (only :notice does)不显示 Flash 消息(仅 :notice 显示)
【发布时间】:2012-05-17 10:28:15
【问题描述】:

我想将用户重定向到event_calendar_path,当它提前了太多月时,使用“下个月”链接显示一条闪现消息,上面写着“你不能提前超过 6 个月”。

我想将它显示为错误消息,但它没有显示。我尝试使用 :notice、:info、:error,但实际上只显示 :notice。

这是我在application.html.haml 文件中的内容:

- flash.each do |key, msg|
  - if key == :notice
    .alert.alert-success= msg
  - elsif key == :error
    .alert.alert-error= msg
  - elsif key == :info
    .alert.alert-info= msg
  - else
    .alert.alert-block= msg

这就是我正在做的显示 Flash 消息:

if @current_month > Date.today.month + 6
  flash[:error] = "You cannot go more than 6 months ahead"
  redirect_to event_calendar_path @event_calendar, :group_id => @group.id
  return
end

如果我将:error 替换为通知,它会起作用,否则我不会收到任何消息。 在我使用简短表单 :notice => "Message" 之前,我对其进行了更改以确保使用该表单显示消息没有问题,但我仍然无法显示它。

此行为的原因可能是什么? 我该如何解决?

谢谢。

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 haml


    【解决方案1】:

    【讨论】:

    • 抱歉,我看不出这将如何解决我的问题。我没有在同一个请求中直接呈现视图,而是将用户重定向到另一个路径,我想在其中显示消息。我什至不需要Flash.keep,因为接下来只有一个请求(重定向视图),所以它应该按预期工作,我错了吗?
    • 你试过了吗:redirect_to root_url, :error => "你不能提前超过 6 个月"
    【解决方案2】:

    你确定你没有从控制器之前过滤器或布局中其他地方的闪存中提取你的 :error/:info 键吗?

    【讨论】:

      【解决方案3】:

      您可以尝试为两者提供相同的 html 类属性吗?也许您的客户端逻辑隐藏了错误消息?

      所以,而不是:

      - if key == :notice
        .alert.alert-success= msg
      - elsif key == :error
        .alert.alert-error= msg
      

      尝试:

      - if key == :notice
        .alert.alert-success= msg
      - elsif key == :error
        .alert.alert-success= msg
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2019-11-05
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多