繁体   English   中英

如何使用简单表单将特定的枚举值指定为隐藏字段?

[英]How do I specify a specific enum value as a hidden field using Simple Form?

我有一个PortStock.rb模型,具有以下枚举:

class PortStock < ApplicationRecord    
  enum action: [ :buy, :sell ]
end

我想做的是在表单的部分内容上,我想将PortStock.buyPortStock.sell为隐藏字段(这将由与表单一起发送的参数确定)。

我不知道在下面的input_fieldvalue:属性中放置什么。

<%= f.input_field :action, as: :hidden, value: ??? %> 

思考?

文档说:

...

最后,还可以使用哈希显式映射属性和数据库整数之间的关系:

 class Conversation < ActiveRecord::Base enum status: { active: 0, archived: 1 } end 

请注意,使用数组时,从值到数据库整数的隐式映射是根据值在数组中出现的顺序得出的。 在示例中, :active被映射为0因为它是第一个元素,而:archived被映射为1 通常,第i个元素在数据库中映射到i-1

因此,一旦将值添加到枚举数组,就必须保持其在数组中的位置,并且仅应将新值添加到数组的末尾。 要删除未使用的值,应使用显式哈希语法。

在极少数情况下,您可能需要直接访问映射。 映射是通过具有复数属性名称的类方法公开的,该方法在HashWithIndifferentAccess返回映射:

 Conversation.statuses[:active] # => 0 Conversation.statuses["archived"] # => 1 

...

这意味着您可以通过2种方式之一解决您的问题。

  1.  <%= f.input_field :action, as: :hidden, value: 0 %> 
  2.  <%= f.input_field :action, as: :hidden, value: PortStock.actions[:buy] %> 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM