从表单中选择枚举以设置角色

2024-05-23

Ruby on Rails 4.1

我正在将 Devise 与枚举角色一起使用。目前,它在创建用户时使用默认角色。我想在创建用户的表单中添加一个字段来设置枚举角色。

I read this https://github.com/RailsApps/rails-devise-pundit#roles但它没有说明如何利用新角色。

这是用户类

devise :database_authenticatable, :registerable, :confirmable,
     :recoverable, :rememberable, :trackable, :validatable
enum role: [:user, :vip, :admin, :developer, :marketing, :support, :translator]
after_initialize :set_default_role, :if => :new_record?

def set_default_role
  self.role ||= :user
end

这是表单的一部分,我试图在其中选择一个枚举角色:

<div class="form-group">
  <%= f.collection_select :role, User.roles, :id, :enum, {prompt: "Select a role"}, {class: "form-control input-lg"} %>
</div>

错误:

NoMethodError - undefined method `enum' for ["user", 0]:Array:
actionview (4.1.1) lib/action_view/helpers/form_options_helper.rb:761:in `value_for_collection'

我以前从未使用过枚举文档 http://edgeapi.rubyonrails.org/classes/ActiveRecord/Enum.html事实证明没有帮助。如何使枚举选项显示?


开始,enum不是属性的名称。属性的名称是role.

看看Rails 设计专家 https://github.com/RailsApps/rails-devise-pundit示例应用程序,特别是文件应用程序/视图/用户/_user.html.erb这是创建表单以允许管理员更改用户角色的部分。我怀疑你想使用collection_select对于帮助者(如果您有单独的角色模型,则适合)。取而代之的是一个普通的select表单助手将起作用。

这是一个对角色选项进行硬编码的简单示例:

<%= f.select(:role, [['User', 'user'], ['Vip', 'vip'], ['Admin', 'admin']]) %>

这是一个更好的示例,可以避免对表单中的角色进行硬编码:

<%= f.select(:role, User.roles.keys.map {|role| [role.titleize,role]}) %>

该语句从 User 模型中获取角色数组,并使用以下方法构造键值对数组:map method.

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

从表单中选择枚举以设置角色 的相关文章

随机推荐

  • 在多维数组 PHP 的所有键中搜索

    我想在多维数组中的所有键中搜索特定字符串 我只需要弄清楚它是否存在 仅此而已 我想知道访问者的 IP 是否存在于任何数组中 有没有我可以用来执行此操作的 php 函数或方法 我尝试过的每个函数或方法总是返回 false 数组中 数组搜索 数
  • 使用 Apache Commons lineIterator 时出现 OutOfMemory 错误

    我正在尝试使用 Apache Commons 逐行迭代 1 2GB 文件FileUtils lineIterator 然而 一旦LineIterator calls hasNext 我得到一个java lang OutOfMemoryErr
  • 如何在 json 中输出 javascript 日期

    我正在尝试时间线图表 http code google com apis visualization documentation gallery annotatedtimeline html Data Format http code go
  • 从 freshdesk api 获取所有用户时获取curl_error(): 2 不是有效的 cURL 句柄资源

    我正在创建自己的系统来管理通过其 API 来自 freshdesk com 的所有票证 我正在发出curl 请求以从freshdesk com 获取数据 通过获取与股票相关的数据 它的工作正常 但是当我通过curl请求请求所有用户时 它会给
  • 使用 Maven 和 Spring REST 配置 Angular 2 项目

    我想将我的小型应用程序从 Angular 1 升级到 Angular 2 我对 Angular 2 和节点配置有点陌生 我的网络应用程序使用 eclipse 和 Maven 问题是我无法使用 Angular 2 进行配置 我应该使用什么目录
  • 对于 1GB 堆,在可视虚拟机中运行计算保留大小需要多长时间?

    我有一个来自 java 进程的 1 GB 堆转储 该进程耗尽了堆空间 我已将堆上传到 java6 发行版附带的 jvisualm 中 我大约 16 小时前开始了 计算保留大小 过程 它仍在运行 计算 1GB 堆上前 20 个对象的保留大小需
  • 以非交互式方式查找合并提交的正确父级

    我正在准备 svn2git 迁移 同时https github com nirvdrum svn2git https github com nirvdrum svn2git虽然非常有用 但我仍然遇到了一些恶作剧 我已经清理掉了大部分 但还剩
  • Java:如何使用自定义 Ant build.xml 将 ProGuard 集成到 Jar 项目中

    我有一个简单的 java 项目 它引用两 2 个库 jar 文件 想要集成 ProGuard 这是我当前的 build xml
  • Visual Studio 调试器 - 自动变量分配

    我正在开发一个多开发人员项目 正在开发的应用程序是通过启动器应用程序启动的 该应用程序传递登录用户 位置等参数 现在 当我调试应用程序时 我在代码上设置了一个断点解析输入参数 并将用户名变量分配给我的用户名等 我可以对这些值进行硬编码 但是
  • 如何使用 YouTube API 访问视频中包含的许可内容

    我想要访问或收集视频中包含的许可内容的 URL 我准备了一张图片 以防无法正确传达我想要的内容 这是我使用的代码的一部分 def youtube videos options youtube build API SERVICE NAME A
  • 这个 HTML 结构有效吗? UL > DIV > { LI, LI } , DIV > { LI, LI } , DIV > { LI, LI }

    这个 HTML 结构有效吗 ul class blog category div class three column li Item 1 li li Item 2 li li Item 3 li div div class three c
  • 提高序列化性能:文本与二进制格式

    如果性能是一个问题 我应该更喜欢二进制序列化而不是 ascii 文本序列化吗 有人用大量数据测试过吗 我使用 boost serialization 来存储表示查找表的矩阵和向量以及 一些内存大小约为 200MByte 的元数据 字符串 I
  • 2D Numpy 数组花式索引 + 掩码

    I have import numpy as np a np array 4 99 2 3 4 99 1 8 7 8 6 8 Why is a True True False False 1 2 等于 array 99 99 And not
  • 获取从开始日期到结束日期的活跃周数

    我的订阅数据如下所示 数据显示用户何时购买订阅 它有user id subscription id start date and end date 我已经得出wk start and wk end从中 user subscription i
  • Tkinter ttk 背景样式的自定义未显示

    在下面的代码中 show widget validity 函数要么应用仅更改小部件现有样式的背景颜色的自定义样式 要么恢复原始样式 这是一个库例程 因此不能完全控制样式 背景颜色似乎已正确重新配置 如每次更改后条目小部件中报告的背景样式描述
  • Rspec:期望与期望与块 - 有什么区别?

    刚刚学习 rspec 语法 我注意到这段代码有效 context given a bad list of players do let bad players it fails to create given a bad player li
  • 构建 C# Web API - REST

    我即将开始一个 C 项目 我从未使用过 C 我希望在犯下愚蠢的错误并走上错误的道路之前能得到一些实施建议 我想要实现的目标基本上是在服务器上拥有一个可以通过 Web API 访问的 C 应用程序 该应用程序将接受一些字符串变量 然后返回一个
  • 如何使用heroku设置环境变量?

    我正在尝试使用此命令行设置环境变量 heroku config set ENV PRODUCTION 但我有这个错误 缺少必需的标志 a app APP 应用程序运行命令 使用 help 查看更多帮助 我的应用程序名称是 disquaire
  • 由 aws API 制作的 HttpRequest 拦截器

    我正在开发一个项目 该项目使用 cognito 作为身份验证服务来保护使用 nodeJS 制作的无服务器休息 API 我已成功关闭未经身份验证的客户端的 API 现在 每当我从 Angular 客户端发出请求时 我都需要在标头中自动注入一个
  • 从表单中选择枚举以设置角色

    Ruby on Rails 4 1 我正在将 Devise 与枚举角色一起使用 目前 它在创建用户时使用默认角色 我想在创建用户的表单中添加一个字段来设置枚举角色 I read this https github com RailsApps