首页 > 解决方案 > Rails 应用中用户注册表单上的英国个人头衔下拉列表及其实现

问题描述

我需要提供一个下拉列表以允许用户在用户注册表单上选择他们的个人头衔(使用设计)。

我需要将该列表作为封闭/预定义列表,而不是由用户填写的字段。

我是否需要创建一个单独的模型/数据库表(例如 Title)来保留那些英国个人头衔(例如 Mr、Mrs 等)的列表,然后使用多对多关系和相应的中介将它们与 User 模型相关联表还是有其他选择或更好的解决方案?非常感谢。

标签: ruby-on-railsactiverecorddevise

解决方案


由于您只需要一个静态列表,因此我建议您为此使用 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] } %>

查看此枚举教程以及有关如何将选择输入与枚举一起使用的相关答案。


推荐阅读