我在使用simple_form
在视图中为枚举字段创建工作选择时遇到问题这是我的代码:
# In model project.rb
enum status: [:draft, :published]
# In view _form.html.erb
<%= simple_form_for @project do |f| %>
<%= f.input :title %>
<%= f.input :status %>
...
<% end %>
这是输出HTML5编号(整数增量)字段而不是选择。
如果我改为:
...
<%= f.input :status, as: :select %>
or
<%= f.input :status, as: :radio_buttons %>
...
输出标有“是”和“否”的选择列表/单选按钮。当我尝试保存时,我得到#{integer}不是有效值错误。
任何帮助都将不胜感激。
答案 0 :(得分:5)
您最好使用collection_select
/ collection_radio_buttons
:
<%= simple_form_for @project do |f| %>
<%= f.input :status, collection: Project.statuses, label_method: :first, value_method: :first, include_blank: false %>
<%= f.input :status, collection: Project.statuses, label_method: :first, value_method: :first, as: :radio_buttons %>
<% end %>
要提供上下文,enum
代表枚举器。
它将您的选项映射到数值[0,1]
,允许您简洁地定义属性的预烘焙选项。
您获得yes/no
和integer
字段的原因是因为状态的“值”是数组[0,1]
。 Rails无法区分。但是,使用上述方法,可以。