Rails 4 как параметризовать enum
Как параметризовать enum? Мне нужно использовать перечисление для параметра, который имеет целочисленное значение в качестве типа данных.
модели /product.rb
class Product < ActiveRecord::Base
enum category_id: [ :hotel, :travel, :restaurant ]
end
просмотров / продукты / боковой панели
<div class="col-md-3">
<ul class="list-group">
<li class="list-group-item">
<span class="badge"><%= Product.where(user_id: current_user).count %></span>
<a href="<%= provider_root_path %>">All</a>
</li>
<% @categories.each do |category| %>
<li class="list-group-item">
<span class="badge"><%= Product.where(category_id: category[1]).count %></span>
<a href="<%= provider_product_category_path(category[0].parameterize) %>"><%= category[0].titleize %></a>
</li>
<% end %>
</ul>
</div>
эта строка работает именно то, что я хочу:
<%= product_category_path(category[0].parameterize) %>
он производит:
'/product/category/travel'
и вот моя проблема:
Контроллеры /product_controller.rb
def category
@products = Product.where(category_id: params[:category_id]).order("created_at DESC")
@categories = @products.category_ids
end
Мне нужно изменить params[:category_id]
целое число У меня есть попытка params[:category_id].to_i
но он всегда возвращает 0.
Кто-нибудь может помочь? заранее спасибо:)
1 ответ
Решение
Чтобы продукт был успешным, вам необходимо:
Product.where(category_id: params[:category_id].to_sym).order(anything_you_want)
Чтобы получить строго целое число, вам необходимо:
Product.category_ids[params[:category_id].to_sym]