Rails 4 Flash消息:随机消息

时间:2016-01-07 06:31:19

标签: ruby-on-rails ruby-on-rails-4

在为项目创造体验的过程中,我正在努力为用户带来更多乐趣,我想实现更改flash消息。

除此之外,我还会稍微清理一下我的控制器。现在,我的所有flash消息都被硬编码到EntriesController,这使得事情变得混乱。理想情况下,我想要实现两件事:

  • 将flash消息移动:success,:danger和:info in到一个单独的文件中以清理我的控制器(并且可能需要在哈希上运行rand)

  • 调用flash消息类型哈希并在其上运行类似.shuffle的内容以选择随机消息。

这是如何理想地实现的?

1 个答案:

答案 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