我有一个PortStock.rb
模型,其中包含以下枚举:
class PortStock < ApplicationRecord
enum action: [ :buy, :sell ]
end
我想要做的是在我的表单上,我希望将PortStock.buy
或PortStock.sell
包含为隐藏字段(这将由与表单一起发送的参数确定)。
我不知道下面value:
的{{1}}属性中包含哪些内容。
input_field
思想?
答案 0 :(得分:2)
documentation说明如下:
...
最后,还可以使用哈希显式映射属性和数据库整数之间的关系:
class Conversation < ActiveRecord::Base enum status: { active: 0, archived: 1 } end
请注意,使用数组时,从值到数据库整数的隐式映射是从值在数组中出现的顺序派生的。在示例中,
:active
映射到0
,因为它是第一个元素,:archived
映射到1
。通常,i
- th元素映射到数据库中的i-1
。因此,一旦将值添加到枚举数组中,就必须维护它在数组中的位置,并且只应将新值添加到数组的末尾。要删除未使用的值,应使用显式哈希语法。
在极少数情况下,您可能需要直接访问映射。映射通过带有复数属性名称的类方法公开,该名称返回
HashWithIndifferentAccess
中的映射:Conversation.statuses[:active] # => 0 Conversation.statuses["archived"] # => 1
...
这意味着您可以通过两种方式之一解决问题。
<%= f.input_field :action, as: :hidden, value: 0 %>
<%= f.input_field :action, as: :hidden, value: PortStock.actions[:buy] %>