ruby-on-rails - Rails 应用中用户注册表单上的英国个人头衔下拉列表及其实现
问题描述
我需要提供一个下拉列表以允许用户在用户注册表单上选择他们的个人头衔(使用设计)。
我需要将该列表作为封闭/预定义列表,而不是由用户填写的字段。
我是否需要创建一个单独的模型/数据库表(例如 Title)来保留那些英国个人头衔(例如 Mr、Mrs 等)的列表,然后使用多对多关系和相应的中介将它们与 User 模型相关联表还是有其他选择或更好的解决方案?非常感谢。
解决方案
由于您只需要一个静态列表,因此我建议您为此使用 an enum
。
如果您还没有完成,首先将所需的字段添加到您的用户表中。运行rails g migration AddTitleToUsers title:integer
,您的迁移应如下所示:
class AddTitleToUsers < ActiveRecord::Migration[5.1]
def change
add_column :users, :title, :integer
end
end
在您的用户模型中:
class User < ActiveRecord::Base
enum title: [:mr, :mrs, :other]
end
在您的视图中,添加它以显示带有您的枚举值的下拉列表(假设f
是您的用户表单):
<%= f.select :title, User.titles.keys.map{ |t| [t.humanize, t] } %>
推荐阅读
- swift - 如何通知一个目标的获取结果控制器另一个目标的托管对象上下文中发生的更改?
- c# - 是否可以在 HTML 帮助器方法中确定 ASP.NET Core 托管环境?
- php - 如何从单选按钮中一一提交选择的答案
- linux - 构建一个查找目录中所有文件的 UNIX 管道(使用 find 、xargs 和 du 命令)
- c# - 仅在存在时选择类相关数据
- android - 使用 Retrofit 和 OkHttp 显示没有 Internet 连接对话框
- ionic-framework - 从 Firestore 数据创建单选按钮警报
- amazon-web-services - AWS 签名 URL 问题
- tensorflow - Tensorflow freeze_graph 到 tflite for android app
- symfony - Doctrine 映射类型实体到 id,id 到实体