Rails simple_form enum_help选择列表问题

时间:2016-02-14 02:17:38

标签: ruby-on-rails ruby-on-rails-4 enums simple-form

我在使用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}不是有效值错误。

任何帮助都将不胜感激。

1 个答案:

答案 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/nointeger字段的原因是因为状态的“值”是数组[0,1]。 Rails无法区分。但是,使用上述方法,可以