【发布时间】:2019-03-16 19:32:15
【问题描述】:
这是我遵循的实现教程:Finally Trying ActionCable
这段代码太长了,所以我不把这段代码放到这个问题中,我只是把一些代码放在用户模型中
def online_now?
$redis.get("users:online:#{id}").present?
end
视图是:
<% User.all.each do |user| %>
<%= user.name %>
<div class="online-indicator">
<% if !user.online_now? && 'xs-none' %>
Online
<% else %>
Offline
<% end %>
</div>
<% end %>
但总是像这样抛出错误
NoMethodError - 未定义的方法
get' for nil:NilClass Did you mean? gem: app/models/user.rb:34:inonline_now?'
表示这一行
$redis.get("users:online:#{id}").present?
我不知道为什么会抛出这个错误。
但它可以在 Rails 控制台上运行
irb(main):005:0> redis.set("mykey", "hello world")
=> "OK"
irb(main):006:0> redis.get("mykey")
=> "hello world"
谢谢
【问题讨论】:
-
$redis为零。你是怎么定义的? -
$redis.set "users:online:#{current_user.id}", 1这是订阅方法的行 -
不,@Pavan 询问您如何在模型方法中定义
$redis变量。很明显它应该是一个 Redis API,但是你在哪里连接到 Redis 并存储它的连接?
标签: ruby-on-rails ruby websocket redis actioncable