Erb: как фильтровать по атрибуту ресурса - PullRequest
0 голосов
/ 18 января 2019

Как мне отфильтровать результаты по атрибуту ресурса в файле .erb. Например, я хотел бы показать товар, цена которого ниже 50 долларов. Ниже приведен текущий файл .erb. Ценник - это строка, которую нужно преобразовать в число.

    <% @products.each do |product| %>
    <tr>
    <td><%= product.title %></td>
    <td><%= product.price %></td>
    <td><%= product.count %></td>
    </tr>
    <% end %>

Могу ли я использовать это в представлении? У меня есть неопределенный метод "фильтр" ошибка.

       <% @products.filter { |p| p.price < 50 }.each %>
       <tr>
       <td><%= product.title %></td>
       <td><%= product.price %></td>
       <td><%= product.count %></td>
       </tr>
       <% end %>

1 Ответ

0 голосов
/ 18 января 2019

Краткий ответ: вы можете использовать select, чтобы выбрать только продукты с ценой менее 50 долларов, или даже partition, чтобы разделить список на те, которые ниже и выше этой цены. В идеале вы должны делать это вне поля зрения, например, внутри контроллера или даже модели.

Базовая фильтрация (вид изнутри):

@products.select { |p| p.price < 50 }.each do |product|

Или с областью в модели:

scope :below_price, ->(price) { where("price < ?", price) }

Вы можете использовать его в контроллере:

PRICE_THRESHOLD = 50

def index
  @products = Product.below_price(PRICE_THRESHOLD)
end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...