Фильтрация коллекции в options_from_collection_for_select - PullRequest
0 голосов
/ 15 октября 2018

Я использую следующий select_tag в форме.Все работает отлично и как положено.

<%= select_tag(:selling_shareholder_id, options_from_collection_for_select(@company.shareholders, 'id', 'name'), {prompt: 'Select Shareholder'})  %>

Теперь я хотел бы показать акционеров в этом списке, только если атрибут number_of_stocks не равен нулю или 0.

Я попробовал следующую строку

<%= select_tag(:selling_shareholder_id, options_from_collection_for_select(@company.shareholders.where(number_of_stocks != 0), 'id', 'name'), {prompt: 'Select Shareholder'})  %>

и получаю следующую ошибку

undefined local variable or method `number_of_stocks' for #<#<Class:0x00007fb0c80ca9d8>:0x00007fb0c3d66688>

Если я могу успешно перечислить всех @ company.shareholder в теге select, разве я не могу легко фильтровать по одному из их атрибутов?

1 Ответ

0 голосов
/ 15 октября 2018

Единственная проблема - ваш синтаксис:

Попробуйте это

<%= select_tag(:selling_shareholder_id, options_from_collection_for_select(@company.shareholders.where.not(number_of_stocks: 0), 'id', 'name'), {prompt: 'Select Shareholder'})  %>

Я заменил

@company.shareholders.where(number_of_stocks != 0)

на

@company.shareholders.where.not(number_of_stocks: 0)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...