You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6升级后删除用户页面select_tag下拉框无选项问题求助

问题根因与解决方案

你遇到的下拉框无选项问题核心出在users_when_being_deleted辅助方法的查询逻辑错误,导致没有查询到符合条件的用户数据,options_from_collection_for_select生成的选项集合为空,所以点击下拉框无内容展示:

1. 需修复的两处错误

(1)查询条件误用字符串常量

原代码中vendor_id: "current_user.vendor_id"将查询值写死为"current_user.vendor_id"字符串,而非当前登录用户的vendor_id属性值,没有任何用户的vendor_id会匹配这个字符串,所以查询结果为空。

(2)误用实例变量而非方法入参

方法入参是user,但过滤排除当前删除用户时用了@user.id,如果实例变量@user未正确赋值会导致查询条件异常。

2. 修复后的辅助方法代码

def users_when_being_deleted(user = nil)
  if user
    User.where(vendor_id: current_user.vendor_id)
        .where.not(id: user.id)
        .order(:name)
  else
    User.where(vendor_id: current_user.vendor_id)
        .order(:name)
  end
end

3. 可选验证&优化项

  • 可以先在视图对应位置加调试代码= users_when_being_deleted(@user).count,刷新页面打开模态框看输出数值,确认修复后数值大于0即说明查询逻辑正常
  • 给下拉框增加空白提示项,避免用户误操作:
    = select_tag :user_id, options_from_collection_for_select(users_when_being_deleted(@user), "id", "name"), include_blank: "请选择要转移的目标用户"
    
  • 若修复查询逻辑后仍点击无反应,可排查前端样式问题:检查下拉框的z-index属性是否小于模态框的z-index,导致点击事件被模态框拦截。

内容的提问来源于stack exchange,提问作者Scott Milella

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.01 20:18:01