Ruby 尝试将枚举放入rails 5中的select form helper类中

Ruby 尝试将枚举放入rails 5中的select form helper类中,ruby,forms,select,enums,ruby-on-rails-5,Ruby,Forms,Select,Enums,Ruby On Rails 5,我有 每次我尝试遵循指南时,我都会得到关于语法错误的信息 这是一个扫帚工,我会一直走到早上 你可能想看看 private method `select' called for nil:NilClass 如果要在select fromenum=>status中获取值,请尝试以下操作 match "plans/subscriptions" => "subscriptions#new", as: "subscription", via: [:get, :post] 或通过常量状态 = f.s

我有

每次我尝试遵循指南时,我都会得到关于语法错误的信息

这是一个扫帚工,我会一直走到早上

你可能想看看

private method `select' called for nil:NilClass

如果要在select from
enum=>status
中获取值,请尝试以下操作

match "plans/subscriptions" => "subscriptions#new", as: "subscription", via: [:get, :post]
或通过常量
状态

= f.select :status, Subscription.statuses.keys.map { |w| [w.humanize, w] }
编辑

作为
表单标签的@spickermann注释,您可以这样使用

= f.select :status, Subscription::STATUSES


用于枚举
订阅。状态
似乎将
表单标签
表单
混在了一起。您正在使用的
form_标记
方法不会为块生成FormBuilder。因此,当使用来自标签的
时,没有
f
。只有
form_(具有不同的签名)允许在块内使用
f
。@spickermann完全正确,谢谢
<%= form_tag subscription_path, id: "subscription-form" do |f| %>
match "plans/subscriptions" => "subscriptions#new", as: "subscription", via: [:get, :post]
= f.select :status, Subscription.statuses.keys.map { |w| [w.humanize, w] }
= f.select :status, Subscription::STATUSES
<%= select_tag :status, options_for_select(Subscription.statuses.map {w| [w.humanize, w]}) %>