Выберите выпадающее из enum, не в результате - PullRequest
0 голосов
/ 28 июня 2019

У меня есть следующее перечисление:

  enum fulfillment_status: { processing: 1, partially_fulfilled: 2, fulfilled: 3 }

Я попытался выбрать с помощью:

        <%= f.select :fulfillment_status, options_for_select(@order.fulfillment_status.map {|k, v| [k.humanize.capitalize, v]}) %>

Ошибка: неопределенный метод `map 'для" обработки ": строка

Пробовал:

        <%= f.select :fulfillment_status, options_for_select(@order.fulfillment_statuses.map {|k, v| [k.humanize.capitalize, v]}) %>
        <%= f.select(:fulfillment_status, @order.fulfillment_statuses.keys.map {|fs| [fs.titleize,fs]}) %>

Ошибка: неопределенный метод `forment_statuses 'для #

Пробовал:

        <%= f.select :fulfillment_status, options_for_select(@order.fulfillment_statuses) %>

ошибка:

неопределенный метод `forment_statuses 'для #

Что странно, потому что делать в консоли =

Order.fulfillment_statuses

приведет ко всем значениям перечисления. Каждый способ, которым я читаю, чтобы сделать это, так же, как я пытался выше

1 Ответ

0 голосов
/ 28 июня 2019

Вы получаете Error: undefined method map for "processing":String, потому что @order.fulfillment_status представлено значением столбца базы данных.Вы ожидаете, что это будет хеш, но этот хеш определен для класса, а не для экземпляра.

То, что вы хотите, это Order.fulfillment_statuses

Когда вы используете enum fulfillment_status: { processing: 1, partially_fulfilled: 2, fulfilled: 3 }, который определяет метод класса с именем self.fulfillment_statuses для класса, в котором вы его определяете, в данном случае Order.Этот метод класса недоступен как метод экземпляра, который вы пытаетесь вызвать с помощью @order.fulfillment_statuses

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...