如何展示在线用户

2024-03-07

我正在编写一个简单的聊天,我需要列出在线用户。我不使用devise对于身份验证,有一个自定义user通过验证的模型omniauth.

user.rb

class User < ActiveRecord::Base
    has_many :messages, dependent: :delete_all
    class << self
        def from_omniauth(auth)
            provider = auth.provider
            uid = auth.uid
            info = auth.info.symbolize_keys!
            user = User.find_or_initialize_by(uid: uid, provider: provider)
            user.name = info.name
            user.avatar_url = info.image
            user.profile_url = info.urls.send(provider.capitalize.to_sym)
            user.save!
            user
        end
    end
end

应用程序控制器.rb

def current_user
    @current_user ||= User.find_by(id: cookies[:user_id]) if cookies[:user_id]
end
helper_method :current_user

我尝试以这种方式做到这一点:添加到application_controller.rb a show_online method:

def show_online
    @users = User.where(status: online)
end

helper_method :online_users

然后添加到视图中:

<%= online_users.each do |user| %>
<ul>
    <li><%= user.name %></li>
</ul>
<%end%>

但它抛出异常ActionView::Template::Error (undefined method 'online_users' for #<MessagesController:0x007f52d7f82740>)

源代码 https://github.com/AlexNikolaev94/chatclone.git here

EDIT

对我来说最好的解决方案是我找到的here https://stackoverflow.com/questions/10805479/rails-how-to-check-for-online-users,但我完全不知道如何正确实现它:(但这绝对是我需要的


它应该是<% %> not <%= %>

<% @users.each do |user| %>
    <ul>
    <li><%= user.name %></li>
</ul>
<% end%>

Secondly

但你还需要检查是否@users是 nil 所以 nil.each 每个都会​​抛出该错误ActionView::Template::Error (undefined method 'each' for nil:NilClass)

所以它看起来像

<% if @users %>
 <% @users.each do |user| %>
  <ul>
    <li><%= user.name %></li>
  </ul>
 <% end%>
<% end %>

或在控制器中

def show_online
  @users = User.where(status: 'Online')
end

and

<% @users.each do |user| %>
<ul>
    <li><%= user.try(:name) %></li>
</ul>
<%end%>

我为什么选择哪里找不到全部 https://stackoverflow.com/questions/11232971/rails-find-all-by-vs-where

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何展示在线用户 的相关文章

  • Watir 脚本偶尔返回 Net::ReadTimeout 错误

    我有一个 Watir 脚本 偶尔会意外地返回此错误 Net ReadTimeout 我搜索了这个错误并发现这个问题 https stackoverflow com questions 47452276 watir get sometimes
  • 红宝石和纱线

    I have an error with my RoR project when I try to start it using Run shift f10 但是当我使用启动服务器时rails s在控制台中 它有效 Your Yarn pa
  • “array.map”是否保留原始顺序?

    我有一个User类has many Jobs 我使用以下代码映射作业 def ranges user jobs map u u start at u end at end 我有一个比较两个数组的规范 my array start1 end1
  • 如何在 RoR 中实施成就系统

    我正在尝试在我的 Ruby on Rails 应用程序中实现一个成就系统 但效果很差 我有一长串想要检查的成就 所有这些都是由各种控制器中的某些创建操作触发的 我的想法是我将拥有一个成就模型 其中包括控制器及其响应的操作 然后对创建进行之前
  • Rails 3.2 开发模式不显示带有回溯等的完整错误页面

    我刚刚升级到 Rails 3 2 一切正常 除了错误页面不再显示正常的开发调试信息 相反 它显示标准生产错误页面 白色背景 中间有红色文本 很抱歉 出了点问题 我们已收到有关此问题的通知 我们会尽快查看 Rails 3 2 是否有新的设置或
  • 从架构中删除表 - Rails

    我想删除架构中的一个表 我在第一次启动项目时创建了数据库并希望删除该表 这样做的最佳方法是什么 I tried rails g migration drop table installs但这只会创建一个空迁移 Schema create t
  • “rake db:seed”和 rake db:fixtures:load 之间有什么区别

    我是 Ruby 和 Rails 的新手 对某些事情感到好奇 在两个不同的教程中 我看到他们使用不同的方法用基本测试信息填充数据库 一种方法是使用 rake db seed 从包含示例数据的文本文件中提取数据 另一个使用 rake db fi
  • 如何将 Devise 的“超时”模块添加到现有的 Devise 安装中? - 轨道 3.1

    这些是将模块添加到现有 Devise 安装的说明 https github com plataformatec devise wiki How To change an already existing table to add devis
  • Rails simple_form:自定义输入id

    我想把用Rails simple form生成的几个表单放在一页上 并用javascript对它们进行操作 然而 simple form 为表单中的各个输入生成了相同的 id 因此我想用我自己的 id 替换生成的 id 现在我有一行 和 H
  • Guard 不会加载 WDM

    我正在学习 Michael Hartl 的 Rails 教程 到目前为止该教程非常出色 我在高级设置一章中 他以有利于 TDD 的方式配置 Rails 环境 我安装了 Guard 并且通过运行我在 spec 文件夹中的测试 它一直正常运行
  • 思考狮身人面像和控制台

    我在 webfaction 上思考 sphinx 时遇到问题 当我在 osx 上本地执行时没有问题 I search gt gt ThinkingSphinx 搜索 雷蒙德 我的回应是这样的 gt 有任何想法吗 thx sg 如果你还没有
  • 无法验证 CSRF 令牌的真实性 Rails/React

    我的 Rails 应用程序中有一个 React 组件 我正在尝试使用它fetch 发送一个POST对于我在本地主机上托管的 Rails 应用程序 这给了我错误 ActionController InvalidAuthenticityToke
  • RubyMine 不能使用 Guard 吗?

    由于某些无法解释的原因 RubyMine 会自动保存您所做的每一个更改 因此每次击键都会触发 Guard 运行您的测试 最可笑的是 显然没有办法禁用这个自动保存 功能 我只是想知道 RubyMine 似乎是 Rails 开发人员中非常流行的
  • 在 Rails 3.2 + SimpleForm 中显示嵌套表单有错误的字段

    我有一个Flight模型嵌套在一个FlightLog模型 AFlightLog可能包含许多航班 我使用 SimpleForm 进行引导安装 这样当验证失败时 可以用错误类包围带有错误的表单元素 问题是 即使触发了嵌套模型的验证 simple
  • 尝试使用适用于 Windows XP 的 Heroku 时未找到 msvcrt-ruby18.dll

    我有一个学生在 Windows XP 上进行开发 他在尝试运行时遇到了一个奇怪的错误heroku keys add 错误是 This application has failed to start because msvcrt ruby18
  • 使用 Ruby on Rails 进行设计 - 强制用户在首次登录时更改密码

    我有一个运行 Devise 的 RoR 应用程序 Rails 4 2 Ruby 2 2 0 我已经进行了设置 以便管理员用户 标识了我添加到用户模型中的 is admin 布尔值 能够创建新的用户帐户 为他们提供生成的密码和确认电子邮件 这
  • Bootstrap shown.bs.tab 事件不起作用

    我正在使用灵活的模板 http the8guild com themes html flexy v1 7 stylesPage html 使用引导程序 并且我无法让选项卡上的 shown bs tab 事件正常工作 我已经成功让它发挥作用J
  • 如何在不加载关联模型的情况下检查 has_one 是否存在

    我有一个简单的 has one 关系 class User lt ApplicationRecord has one detail has many courses end class Detail lt ApplicationRecord
  • Mongoid 命名范围比较同一文档中的两个时间字段

    我需要在 Mongoid 中创建一个命名范围来比较同一文档中的两个时间字段 例如 scope foo where gt updated at gt gt checked at 这显然不会像它对待的那样起作用 checked at作为一个符号
  • 当一组工作人员完成时如何执行 Sidekiq 回调

    假设我有一个 Sidekiq 任务将产品处理到我的数据库 每个产品都按商店分组 因此我的代码的一个过于简化的示例将是这样的 stores each do store store products each do product Produc

随机推荐

  • 是否可以对 feed 进行过滤

    是否可以对流中的提要实施过滤 我希望允许用户关注其他用户帖子 但将这些帖子标记为各种类别 我们的愿望是选择一个 足球 类别 并仅查看我关注的人发布的具有该标签的帖子 或者如果该类别是 所有体育 则可能是一个标签集合 查看 api 和文档 提
  • Spring集成:如何顺序处理文件

    我使用 int file inbound channel adapter 来加载目录中存在的文件 我喜欢按顺序处理文件 这意味着当第一个文件的处理完成时 我加载第二个文件 等等 I see a sample https github com
  • Firefox 中的无效日期 - Javascript

    我想将以下字符串 10 10 2013 03 04 放入 Date 对象中 它在 Chrome 中工作 但 Firefox 告诉我这是一个无效的日期 我猜他们的意思是格式 我尝试对其使用 Date parse 但这使其成为 NaN 该怎么办
  • 如何向表达式添加另一个条件?

    我有这样的表情 Expression
  • Mongoose - 如何分组和填充?

    我使用 MongoDB 和 Mongoose 作为我的 ODM 我尝试使用以下命令进行查询populate and group by在同一份声明中 这是我的简单文档模型 var userSchema new Schema username
  • 避免在 WooCommerce 购物车中组合虚拟和物理产品

    我已经寻找这个问题很长时间了 但似乎从未找到可能的解决方案 有谁看到任何解决方案如何在一个 Woocommerce 购物车中仅允许物理或虚拟产品 当客户尝试添加虚拟和物理的组合并禁止该组合时 或者确保该组合不能出现在一个购物车中时 可能会弹
  • 当网络连接关闭时,适用于 Android 的 Picasso 库是否可以处理图像加载?

    我正在开发一个我使用的应用程序毕加索图书馆 http square github io picasso 用于在我的中加载图像ViewPager和别的ImageViews 所以我想知道如果网络连接关闭会发生什么 库是否可以自行处理 或者我是否
  • 通过 C++ 互操作或其他方式实现 C# 第一类延续?

    我们有一个非常高性能的多任务 近乎实时的 C 应用程序 这一性能主要是通过使用自制的调度程序在内部实施协作多任务来实现的 这通常称为微线程 在这个系统中 所有任务都通过队列与其他任务通信 我们遇到的具体问题似乎只能通过 C 不支持的第一类延
  • 按部分函数与 lambda 映射列表

    我想知道对于大多数例子来说 它是否更 Pythonic 使用lambda http docs python org reference expressions html lambda or the partial http docs pyt
  • 如何仅从网站上刮掉 标记

    我正在研究网络爬虫 目前我抓取了整个内容 然后使用正则表达式删除
  • 读取数据文件时将任意列值传递到 D3 可视化

    我正在使用 D3 直方图可视化 并希望传递不一定名为 字母 或 频率 的标题 如果我尝试更改以下代码块中的列属性 则不会显示任何可视化效果 如何传入任意列名称 d3 tsv datapath type function error data
  • 如何从 Java 应用程序将 SQL 文件(存储在 Java 项目的源文件夹中)加载到 MySQL 中?

    我想在运行时将 SQL 文件 存储在 NetBeans Java 项目的源文件夹中 从我的 Java 应用程序加载到 MySQL 中 我怎样才能做到这一点 SQL 文件大小为 15 15 MB 我想知道是否可以复制到字符串中 或者 如果我无
  • 构建时 Swift 编译器分段错误

    添加 方便的 计算height财产给UIView in my UIViewExtension swift文件导致 Swift 编译器出现段错误 这里可能出了什么问题 0 swift 0x00000001061e5608 llvm sys P
  • 在 Scala 中使用 FoldLeft 将参数列表应用于柯里化函数

    是否可以做一个foldLeft在参数列表上 其中提供给折叠的初始值是完全柯里化函数 运算符是apply 列表是要传递给函数的参数列表f 例如 假设 f 定义为 scala gt val f i Int j Int k Int l Int g
  • R,更改轴刻度线和刻度线标签之间的距离

    在下面的示例中 我在 0 95 处绘制了一个自定义刻度线 根据 Thomas 的建议进行编辑以使标签水平 d matrix runif 40 ncol 4 colnames d c a b c d barplot d beside T co
  • 调用eachParallel() 时的 Groovy (GPars) 和 MissingMethodException

    当我在控制台中运行以下代码时 groovy 2 1 3 strings butter bread dragon table strings eachParallel println it0 I get groovy lang Missing
  • 无法使用 MapStruct 将属性 String 映射到 JAXBElement

    所以我玩了一下 Mapstruct 阅读了版本 1 1 0 Final 的参考文档 并得出了这一点 隐式类型转换 http mapstruct org documentation stable reference html implicit
  • Python - Sympy 最小值和最大值

    我正在尝试学习 sympy 的微积分函数 并且我能够通过以下方式尽可能获得极值临界点的二阶导数的根 import numpy as np from numpy import linspace math arange linspace fro
  • MVVM、ObservableCollection、异步等

    因此 我正在进入下一阶段的教育 并且已经遇到了与 SQLite 使用相关的一些障碍 这是一个通用应用程序 我当前的重点是该解决方案的 Windows Phone 方面 我的问题在某种程度上独立于 SQLite 但我将使用它作为示例 我正在将
  • 如何展示在线用户

    我正在编写一个简单的聊天 我需要列出在线用户 我不使用devise对于身份验证 有一个自定义user通过验证的模型omniauth user rb class User lt ActiveRecord Base has many messa