Rails 4 + enum:如何在collection_select中大写这些值?

时间:2014-07-17 16:27:23

标签: ruby-on-rails enums

我有一个使用枚举的模型:

class ScheduledPayment < ActiveRecord::Base
  enum status: { pending: 0, received: 1 }

  monetize :amount_cents
  belongs_to :lease

  scope :recent, -> { where(start_date: 30.days.ago..0.days.ago).order("start_date DESC") }
end

以及用于选择其中一种状态的表单:

<%= form_for [:admin, @scheduled_payment] do |form| %>
  <div>
    <%= form.label :status %>
    <%= form.collection_select :status, ScheduledPayment.statuses, :last, :first %>
  </div>
  <%= form.submit %>
<% end %>

但是,这会创建一个包含pendingreceived的精选下拉列表。我该如何标出价值?

1 个答案:

答案 0 :(得分:4)

解决了它:

<%= form_for [:admin, @scheduled_payment] do |form| %>
  <div>
    <%= form.label :status %>
    <%= form.collection_select :status, ScheduledPayment.statuses.keys, :to_s, :titlecase %>
  </div>
  <%= form.submit "Update" %>
<% end %>

您无法使用哈希值。它会说值'1'无效。您必须将其设置为字符串值。