以升序显示分类

时间:2017-10-11 00:45:23

标签: ruby-on-rails ruby activerecord controller

我正在构建一个下拉菜单,在Ruby on Rails中显示类别,并希望按字母顺序显示下拉列表(A ... Z)。

问题: “我可以通过编辑控制器或视图中的方法按字母顺序订购下拉菜单吗?”

由于它们不是按字母顺序排列在数据库中,因此我想知道是否有办法在默认情况下显示数据显示数据:

| DROPDOWN |
| _Cooking ____ |
| _Zoology ____ |
| _history _____ |
| _Gardening__ |
| _Archery ____ |

成:

| DROPDOWN |
| _Archery ____ |
| _Cooking ____ |
| _Gardening__ |
| _history _____ |
| _Zoology ____ |

目前,Categories的值为 id,name,created_at和updated_at

以下是数据库的ActiveRecord关系的片段:

的ActiveRecord ::关系
类别ID:1,名称:“技术”,created_at:“2017-10-10 21:48:59”,updated_at:“2017-10-10 21:48:59”
类别ID:2,名称:“恐怖/神秘”,created_at:“2017-10-10 21:50:38”,updated_at:“2017-10-11 00:06:38”
类别ID:3,名称:“幻想”,created_at:“2017-10-10 21:50:43”,updated_at:“2017-10-10 21:50:43”
类别ID:4,名称:“历史小说”,created_at:“2017-10-10 21:50:51”,updated_at:“2017-10-10 21:50:51”

如果这还不够,我可以提供相关文件来帮助解决问题。

感谢您抽出时间来帮助我!

3 个答案:

答案 0 :(得分:0)

是的,你可以,这里是样本(考虑你使用form_for和f作为表格变量)

<%= f.select :category_id, Category.uniq.pluck(:name, :id).sort, { include_blank: true }, { class: 'your class name' } %>

答案 1 :(得分:0)

如果您的类别与资源相关联,并且您尝试在需要保存的表单中显示所有类别。我假设您拥有类似文章的资源,并希望在保存时向文章添加类别进入数据库。

    def new
    @article = Article.new
    @temp = Category.alphabetically
    @categories = @temp.all.map{|c| [ c.name, c.id ] }
    end

在您的类别模型中

category.rb

 class Category < ApplicationRecord
    scope :alphabetically, -> { order(name: :asc) }
 end

在视图中

_form.html.erb

 <%= select_tag(:category_id, options_for_select(@categories), class: "form-control", :prompt => "Select one!") %>

如果您有任何问题,请告诉我。

答案 2 :(得分:0)

您可以根据属性名称

按升序调用所有类别

@categories = Categories.all(:order =&gt;&#34; name ASC&#34;)

这里&#34;名字Asc&#34; name是指类别名称

在rails控制台中尝试此操作..您可以看到该订单