寻找一种方式通知用户,通过闪光灯,他们已经获得了一个新的徽章。
我已经按照这里的说明设置了我的观察者:https://github.com/merit-gem/merit#getting-notifications
我的观察者代码是:
class ReputationChangeObserver
def update(changed_data)
description = changed_data[:description]
flash[:info] = description
end
end
Rails抱怨如下:
undefined local variable or method `flash' for #<ReputationChangeObserver:0x0000000586d648>
我知道flash是基本动作控制器的一部分。但是,我不知道观察者如何访问闪存或会话,因为它似乎存在于rails框架之外。
我遗漏了什么?关于如何实现用户通知(我可以找到),似乎没有任何示例或教程。
有人能用他们的智慧吗?
发布于 2016-02-29 20:03:49
据我所知,你不能从观察者那里获得闪光灯。您需要一种单独的方式将消息传递给网页上的用户。例如,在update()方法中,捕获要显示的信息,并创建将由控制器使用的活动记录。您可以建立自己的模型,也可以使用处理活动提要的宝石之一。
根据您的用例,可以有几种不同的方法来执行通知:
如果你知道你的用户会在一个页面上停留一段时间,那么1,2将是合适的。例如,如果您的应用程序有仪表板页面或时间线页面(比如FB或Twitter)。如果您知道您的用户将加载(访问)许多不同的页面,但是在重新加载页面之前,您的用户将无法获得更新,这是非常理想的。
简而言之,没有办法直接将通知推送给观察者。更新发生在后台,并且不了解控制器。您需要存储(或者在实时更新的情况下发布)更新,并且当用户加载应用程序时,让控制器拉出更新以创建通知给用户。
希望这能有所帮助。
https://stackoverflow.com/questions/35707575
复制相似问题