Rails flash消息:他们的工作方式是否有充分理由?

时间:2016-08-08 15:43:16

标签: ruby-on-rails

Rails' flash'消息系统非常有用,但我总是发现其实现的细节使其使用变得尴尬。

具体而言,在响应结束时清除闪存消息。这意味着您必须确定它们是否将用于直接页面呈现或重定向,然后通过使用' now'来通知闪存系统。如果它不是重定向。

这似乎过于复杂且容易出错。

偶尔我会发现自己正在构建需要表现出闪存行为的东西,而我使用的过程略有不同:

class FlashlikeStore

  attr_accessor :session

  def initialize(session)
    session[:flashlike] ||= []
    self.session = session
  end

  def add(name, data)
    self.store << { name: name, data: data }
  end

  def read
    session.delete(:flashlike).to_json
  end

  def any?
    store && store.any?
  end

  protected

  def store
    session[:flashlike]
  end

end

在应用程序助手中有一点语法糖,我可以轻松地添加我的名称 - 值对,并且读取它的行为会删除数据。 (在这种情况下,我实际上是通过AJAJ阅读此内容,但这里并不重要。)

结果是消息只被读过一次,没有必要预先确定或猜测它们何时出现。他们在需要时会阅读,然后就会消失。

我想,有人可能会争辩说,对某个对象的调用既不应该读取数据也不应该改变状态,所以“读”&#39;方法可以分为“阅读”和“阅读”。并且&#39;擦拭&#39;如果你想那样纯粹的话。 (虽然你可能不会使用Rails。)

所以问题是:我错过了什么吗? Rails Flash消息的工作原理是否有令人信服的理由,因为它需要现在的“快速消息”。方法

0 个答案:

没有答案