我认为每次你做flash[:notice]="Message"它会将它添加到数组中,然后在视图中显示,但以下只保留最后一个闪存:
flash[:notice] = "Message 1"
flash[:notice] = "Message 2"
Run Code Online (Sandbox Code Playgroud)
现在我意识到它只是一个带键的简单哈希(我认为:))但是有更好的方法来执行多次闪烁而不是以下:
flash[:notice] = "Message 1<br />"
flash[:notice] << "Message 2"
Run Code Online (Sandbox Code Playgroud)
Vic*_*kin 55
我通常会将这些方法添加到我的ApplicationHelper中:
def flash_message(type, text)
flash[type] ||= []
flash[type] << text
end
Run Code Online (Sandbox Code Playgroud)
和
def render_flash
rendered = []
flash.each do |type, messages|
messages.each do |m|
rendered << render(:partial => 'partials/flash', :locals => {:type => type, :message => m}) unless m.blank?
end
end
rendered.join('<br/>')
end
Run Code Online (Sandbox Code Playgroud)
之后很容易使用它们:
你可以这样写:
flash_message :notice, 'text1'
flash_message :notice, 'text2'
flash_message :error, 'text3'
Run Code Online (Sandbox Code Playgroud)
在你的控制器中.
只需将此行添加到您的布局:
<%= render_flash %>
Run Code Online (Sandbox Code Playgroud)
mip*_*adi 44
该flash消息可以真的是你想要的任何东西,所以你可以做这样的事情:
flash[:notice] = ["Message 1"]
flash[:notice] << "Message 2"
Run Code Online (Sandbox Code Playgroud)
然后在您的视图中,将其输出为
<%= flash[:notice].join("<br>") %>
Run Code Online (Sandbox Code Playgroud)
或者你喜欢什么.
这种技术是否比其他解决方案更容易,取决于您自己的偏好.
我认为框架中内置的想法是,您粘贴到闪存中的每条消息都是可重写的。您为每条消息指定一个唯一键,以便您可以更改或覆盖它。
如果您需要另一条消息,请不要将其称为“:notice”。称每一个都是独一无二的。然后为了呈现 flash 消息,循环遍历哈希中的任何内容。
如果这对您不起作用,请考虑您是否真的需要简化您的 UI。
| 归档时间: |
|
| 查看次数: |
31101 次 |
| 最近记录: |