【问题标题】:Rails 4 + enum: How to upcase the values in a collection_select?Rails 4 + enum:如何将collection_select中的值大写?
【发布时间】:2014-07-17 16:27:22
【问题描述】:

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

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 的选择下拉菜单。我将如何命名这些值?

【问题讨论】:

  • 你可以映射状态:ScheduledPayment.statuses.map(&:titleize)

标签: ruby-on-rails enums


【解决方案1】:

解决了:

<%= 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' 无效。您必须将其设置为字符串值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-07-31
    • 2016-11-22
    • 1970-01-01
    • 2014-11-09
    • 1970-01-01
    • 2016-02-02
    • 1970-01-01
    • 2016-09-10
    相关资源
    最近更新 更多