首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >通知-闪存消息,如何

通知-闪存消息,如何
EN

Stack Overflow用户
提问于 2016-02-29 19:09:45
回答 1查看 336关注 0票数 1

寻找一种方式通知用户,通过闪光灯,他们已经获得了一个新的徽章。

我已经按照这里的说明设置了我的观察者:https://github.com/merit-gem/merit#getting-notifications

我的观察者代码是:

代码语言:javascript
运行
复制
class ReputationChangeObserver

  def update(changed_data)  
    description = changed_data[:description]
    flash[:info] = description
  end

end

Rails抱怨如下:

代码语言:javascript
运行
复制
undefined local variable or method `flash' for #<ReputationChangeObserver:0x0000000586d648>

我知道flash是基本动作控制器的一部分。但是,我不知道观察者如何访问闪存或会话,因为它似乎存在于rails框架之外。

我遗漏了什么?关于如何实现用户通知(我可以找到),似乎没有任何示例或教程。

有人能用他们的智慧吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-02-29 20:03:49

据我所知,你不能从观察者那里获得闪光灯。您需要一种单独的方式将消息传递给网页上的用户。例如,在update()方法中,捕获要显示的信息,并创建将由控制器使用的活动记录。您可以建立自己的模型,也可以使用处理活动提要的宝石之一。

根据您的用例,可以有几种不同的方法来执行通知:

  1. 使用以下内容的实时通知:http://railscasts.com/episodes/401-actioncontroller-live?view=asciicast (您只需在上述update()中发布数据并让订阅者使用它)
  2. 在网页上进行长时间轮询以获取任何更新:http://railscasts.com/episodes/229-polling-for-changes-revised?view=asciicast
  3. 显示用户页面加载的更新:设置before_action过滤器并检查用户是否有新的活动提要。如果是,把它添加到闪光灯中。

如果你知道你的用户会在一个页面上停留一段时间,那么1,2将是合适的。例如,如果您的应用程序有仪表板页面或时间线页面(比如FB或Twitter)。如果您知道您的用户将加载(访问)许多不同的页面,但是在重新加载页面之前,您的用户将无法获得更新,这是非常理想的。

简而言之,没有办法直接将通知推送给观察者。更新发生在后台,并且不了解控制器。您需要存储(或者在实时更新的情况下发布)更新,并且当用户加载应用程序时,让控制器拉出更新以创建通知给用户。

希望这能有所帮助。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35707575

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档