我创建了一个问题,其中包含列出可能在表单中使用的性别值的枚举等:
genderable.rb
module Genderable
extend ActiveSupport::Concern
included do
enum gender: [:"Not Known", :"Male", :"Female", :"Not Applicable"]
end
end
这里我将其包含在我的模型中:
user.rb
class User < ActiveRecord::Base
include Genderable
has_one :user_gender
has_one :gender, :through => :user_gender
accepts_nested_attributes_for :user_gender
end
我在以下视图中使用它:
edit.html.erb
<div class="form-group">
<%= f.select :gender, User.genders, :class => "form-control" %>
<%= showErrorMessages("Gender", :gender) %>
</div>
这是为我的观点生成的标记:
<select id="user_gender" name="user[gender]">
<option value="0">Not Known</option>
<option value="1">Male</option>
<option value="2">Female</option>
<option value="3">Not Applicable</option>
</select>
这是我在尝试依赖以上所有内容提交表单时收到的错误消息:
似乎ActiveRecord不喜欢这样一个事实,即性别的价值是一个字符串,而不是一个整数(我猜测!)。或者它可能不喜欢该值与我创建的枚举的符号值之一不匹配。我真的不确定。有谁知道问题是什么?基本上,我只想用用户ID和所选值更新user_genders表。
答案 0 :(得分:0)
您无法将整数值分配给enum
。您需要指定实际符号。
对于您的观点,您应该使用:
<%= f.select :gender, User.genders.keys, :class => "form-control" %>
为了生成如下所示的选择:
<option value="Not Known">Not Known</option>
<option value="Male">Male</option>
<option value="Female">Female</option>
<option value="Not Applicable">Not Applicable</option>