在为项目创造体验的过程中,我正在努力为用户带来更多乐趣,我想实现更改flash消息。
除此之外,我还会稍微清理一下我的控制器。现在,我的所有flash消息都被硬编码到EntriesController
,这使得事情变得混乱。理想情况下,我想要实现两件事:
将flash消息移动:success,:danger和:info in到一个单独的文件中以清理我的控制器(并且可能需要在哈希上运行rand)
调用flash消息类型哈希并在其上运行类似.shuffle
的内容以选择随机消息。
这是如何理想地实现的?
答案 0 :(得分:0)
我建议您为闪存创建一个帮助程序,将它们全部存储在en.yml文件中,并使用.sample
方法在控制器中使用它们
# app/controllers/entries_controller.rb
include FlashHelpers
class EntriesController < ApplicationController
def index
flash_message success_flashes.sample if success?
# and so on ...
end
end
# app/helpers/flash_helpers.rb
module FlashHelpers
def flash_message(message)
flash[:message] = message
end
def success_flashes
flash_messages.fetch :success
end
def danger_flashes
flash_messages.fetch :danger
end
def info_flashes
flash_messages.fetch :info
end
private
def flash_messages
I18n.translate("flash_messages")
end
end
# app/views/some_view
<%= flash[:message] %>
# config/locales/en.yml
en:
flash_messages:
info:
- info1 message
- info2 message
- info3 message
danger:
- danger1 message
- danger2 message
- danger3 message
success:
- success1 message
- success2 message
- success3 message