2016-07-05 5 views
1

Ich habe Probleme beim Zugreifen auf einen Enum-Wert von der Ansichtsebene in Rails.Rails: Zugreifen auf Enum-Wert in Ansichtsschicht

Ich habe ein Activerecord-Modell namens Rule, die eine ENUM hat operation definiert:

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

Ich habe eine Regel meiner Sicht übergeben und ich versuche, das Operationsfeld zuzugreifen. Das Objekt gibt nil zurück, obwohl es einen Wert hat.

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

Wenn ich versuche, über meine Konsole auf das Operationsfeld zuzugreifen, funktioniert es einwandfrei.

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

ich festgestellt, dass operation kein Rubin/Schienen-Schlüsselwort. Gibt es einen Trick, um Enums in der Ansichtsebene anzuzeigen?

Vielen Dank im Voraus!

+0

Ich habe versucht, die Spalte zu ‚op‘ umbenennen und dass das Problem nicht beheben. – warder57

Antwort

0

Dieses Problem wurde verursacht, als ich den Hash klopfte, der die Enumeration definierte. Ich habe dies getan, um Optionen für ein Select-Tag bereitzustellen.

@operations = RowRule.operations 
# alter @operations here 

Ich löste dies durch den Hash-Klonen:

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