使用循环显示闪存消息与使用if-exists

huangapple go评论57阅读模式
英文:

Showing Flash-messages with loop vs using if-exists

问题

第一种方式和第二种方式都可以用来显示闪存消息。但它们之间的区别在于数据结构的不同以及如何提取消息。

在第一种方式中,闪存消息被存储在一个字典中,其中键是消息的类型(例如,"success"或"danger"),而值是消息内容。在循环中,我们遍历字典中的每个键值对,然后将消息内容显示在HTML中。

而在第二种方式中,消息被存储在不同的变量中,具体是noticealert。这种方式更加简单,因为我们不需要遍历字典,只需要检查这些变量是否存在,然后将它们显示在HTML中。这是因为Rails框架已经将消息从闪存中提取到了这些变量中。

所以,第一种方式需要遍历字典以显示消息,而第二种方式则不需要,因为消息已经以单独的变量形式提供。

英文:

What's the difference between showing flash-messages using ...

<% flash.each do |type, msg| %>
  <div class="alert alert-info">
    <%= msg %>
  </div>
<% end %>

... and using ...

<% if notice %>
  <p class="alert alert-success"><%= notice %></p>
<% end %>
<% if alert %>
  <p class="alert alert-danger"><%= alert %></p>
<% end %>

?

I have tried both pattern and both worked.

Why is 'notice' as variable in the second case? In the first case it's a dictionary.

What happens there (in the second case)? Why doesn't have it to be unpacked?

答案1

得分: 3

notice()
便捷访问器用于 flash[:notice]

# 文件 actionpack/lib/action_dispatch/middleware/flash.rb,第 271 行
def notice
  self[:notice]
end
英文:

Quote from the Ruby on Rails documentation:

> notice()
>
> Convenience accessor for flash[:notice].
>
> # File actionpack/lib/action_dispatch/middleware/flash.rb, line 271
> def notice
> self[:notice]
> end

huangapple
  • 本文由 发表于 2023年7月3日 18:45:05
  • 转载请务必保留本文链接:https://go.coder-hub.com/76603995.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定