我有一个 Rails 4.1 应用程序,其中使用枚举来表示对象的隐私级别。
在我的架构中:
t.integer "privacy_level", default: 0
在我的模型中:
enum privacy_level: { privacy_private: 0, privacy_trusted: 1, privacy_public: 2 }
在我的 ActiveAdmin 注册文件中:
index do
column :privacy_level
default_actions
end
form do |f|
f.inputs "Edit My Model" do
f.input :privacy_level
end
f.actions
end
在 ActiveAdmin 索引页面上,它运行得很好。每个对象的隐私级别显示为“privacy_private”、“privacy_trusted”和“privacy_public”。
但是,当我尝试编辑对象时,输入类型是带有向上和向下箭头的数字框,它允许我输入任何整数,无论该整数是否是有效的隐私级别(甚至是负值)。
我希望看到的是一个下拉(选择)输入,其中包含我在模型中定义的三个枚举字符串值。
根据杰克的回答,这对我有用。假设您的 ActiveRecord 模型是Tweets
:
f.input :privacy_level, as: :select, collection: Tweet.privacy_levels.keys
这里需要注意的关键事项:
- 您的 ActiveRecord 有一个有用的字典(可在 enum_name.pluralize 获得),其中包含枚举键到值。
- 使用字符串(并忽略底层整数表示)可以更轻松地写入枚举值。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)