【问题标题】:Rails 4 how to parameterize enumRails 4如何参数化枚举
【发布时间】:2015-12-03 23:55:12
【问题描述】:

如何参数化枚举?我需要使用枚举作为参数,它有一个整数值作为数据类型。

models/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'

这是我的问题:

controllers/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。

有人可以帮忙吗?在此先感谢:)

【问题讨论】:

    标签: ruby-on-rails ruby enums slug


    【解决方案1】:

    要使产品成功,您需要:

    Product.where(category_id: params[:category_id].to_sym).order(anything_you_want)
    

    要获得严格的整数,您需要:

    Product.category_ids[params[:category_id].to_sym]
    

    【讨论】:

    • 现在可以了 :) @products = Product.where(category_id: Product.category_ids[params[:category_id].to_sym]).order("created_at DESC") 非常感谢
    猜你喜欢
    • 2016-08-02
    • 2014-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多