Rails:在视图层中访问枚举值

时间:2016-07-05 19:42:36

标签: ruby-on-rails ruby-on-rails-4 activerecord enums

我无法从Rails中的视图层访问枚举值。

我有一个名为Rule的ActiveRecord模型,它定义了枚举operation

class Rule < ActiveRecord::Base
  enum operation: [:says, :contains]
end

我已将规则传递给我的视图,我正在尝试访问操作字段。尽管有一个值,该对象仍会返回nil

= rule.inspect             #=> #<Rule id: 2, operation: 1>
= rule.operation           #=> Nil
= rule.operation.class     #=> NilClass

当我尝试从我的控制台访问操作字段时,它可以正常工作。

rule.inspect             #=> #<Rule id: 2, operation: 1>
rule.operation           #=> "contains"

我确认operation不是ruby / rails关键字。是否有一些技巧可以让枚举显示在视图层中?

提前致谢!

1 个答案:

答案 0 :(得分:0)

当我破坏定义枚举的哈希时,就会引起这个问题。我这样做是为了为select标签提供选项。

@operations = RowRule.operations
# alter @operations here

我通过克隆哈希来解决这个问题:

@rule_operations = RowRule.operations.clone
# alter @operations here