Попытка поместить enum в вспомогательный класс select form в rails 5 - PullRequest
0 голосов
/ 14 февраля 2019

У меня

<%= f.select(:status, [["active", 0], ["inactive", 1], ['cancelled', 2]]) %>

И изначально

<%= f.select(:status, collection: Subscription::STATUSES) %>

Но оба не работают.

Вот подписка. Rb

class Subscription < ApplicationRecord
  belongs_to :user
  belongs_to :plan

  STATUSES = {active: 0, inactive: 1, cancelled: 2}
  enum status: STATUSES
end

Каждый раз, когда я пытаюсь сделать это, я получаю:

private method `select' called for nil:NilClass

И каждый раз, когда я пытаюсь следовать инструкциям, я получаю это сообщение за альтернативный сбой синтаксиса.

Это хедшкрейтер, который я оставлю до утра.

Возможно, вы захотите увидеть

<%= form_tag subscription_path, id: "subscription-form" do |f| %>

И, следовательно:

match "plans/subscriptions" => "subscriptions#new", as: "subscription", via: [:get, :post]

1 Ответ

0 голосов
/ 14 февраля 2019

Если вы хотите получить значение, выберите из enum => status попробуйте это

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

Или по константе STATUS

= f.select :status, Subscription::STATUSES

Редактировать

В качестве @spickermann комментария для form_tag вы можете использовать вот так

<%= select_tag :status, options_for_select(Subscription.statuses.map {w| [w.humanize, w]}) %>
...