【问题标题】:Rails Flash message array not parsing with recommended approach on SORails Flash 消息数组未使用 SO 上的推荐方法进行解析
【发布时间】:2013-06-25 00:50:21
【问题描述】:

解析Rails内置的FLASH消息有几个问题——大家都说应该是这样的:

<% flash.each do |key, value| %>
    <div id="flash_message" class="alert alert-<%= key %>">
        <%= value %>
    </div>
    <% end %>

这可以很好地打印消息,并且我有一个可以正常工作的 jQuery 淡出功能。

问题 - 当我想将多条消息放入闪存阵列时会发生什么?

 flash[:success] = ["Job edited successfully"]
else
  addNewJob(params,@cust)   
      flash[:added] = "Job Added Successfully" 
end
if upd
  flash[:success] << "Customer Info Edited Successfully"
else
  flash[:error] = "ERROR: Customer info could not be edited!"
end

在这里,我将两个元素推入 flash[:success] - 根据 SO 和其他地方的其他帖子,这很好,因为 flash.each 应该将它们拉出数组。

但它没有:

<div id="flash_message" class="alert alert-success">
        ["Job edited successfully", "Customer Info Edited Successfully"]
    </div>

这是页面源输出,它看起来就像页面上的那样 - 将整个数组显示为一个排序字符串,然后淡化整个东西。

我的预期:

作业编辑成功 客户信息编辑成功

在两条线上,同时淡出。

帮助?

【问题讨论】:

  • value.join("\n")

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


【解决方案1】:

将模板更改为:

<% flash.each do |key, value| %>
    <% Array.new(value).each do |elem| %>
        <div id="flash_message" class="alert alert-<%= key %>">
            <%= elem %>
        </div>
    <% end %>
<% end %>

【讨论】:

  • 你不必说Array.new(value),它就像Array(value)一样工作。对于那些不熟悉约定的人,这可以确保结果是一个数组。
  • @Ju Liu,这超出了这个问题的范围,但想指出ids 应该是唯一的。使用您的解决方案,您可以拥有多个具有相同 iddivs,即 flash_message
  • @DGM 是的,我认为这是个人喜好比什么都重要:)
  • @vinodadhikary 你是对的,我保留了原始模板。甚至在以前,如果您有多种类型的 flash 消息,您可能会有多个具有相同 id 的 div。
  • Ju Liu 正确答案,但我通过将 div 放在 Array.new 语句上方来解决多 id 问题 - 我实际上 想要 这些消息打印在单个 div 中所以jQuery并在几秒钟后淡出整个事情。谢谢!
猜你喜欢
  • 1970-01-01
  • 2017-01-04
  • 2011-09-10
  • 2015-10-22
  • 1970-01-01
  • 1970-01-01
  • 2015-04-20
  • 1970-01-01
相关资源
最近更新 更多