Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/22.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails 按升序显示类别_Ruby On Rails_Ruby_Activerecord_Controller - Fatal编程技术网

Ruby on rails 按升序显示类别

Ruby on rails 按升序显示类别,ruby-on-rails,ruby,activerecord,controller,Ruby On Rails,Ruby,Activerecord,Controller,我正在构建一个下拉菜单,在RubyonRails中显示类别,并希望按字母顺序(a…Z)显示下拉菜单 问题: “我可以通过编辑控制器或视图中的方法按字母顺序排列下拉菜单吗?” 由于它们在数据库中不是按字母顺序排列的,我想知道是否有一种方法可以让数据显示当前默认情况下的数据: |下拉菜单| |_烹饪 |_动物学 |_历史 |_园艺 |_射箭 进入: |下拉菜单| |_射箭 |_烹饪 |_园艺 |_历史 |_动物学 目前,Categories的值为id、name、created_at和upda

我正在构建一个下拉菜单,在RubyonRails中显示类别,并希望按字母顺序(a…Z)显示下拉菜单

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

由于它们在数据库中不是按字母顺序排列的,我想知道是否有一种方法可以让数据显示当前默认情况下的数据:

|下拉菜单|
|_烹饪 |_动物学 |_历史 |_园艺 |_射箭
进入:

|下拉菜单|
|_射箭 |_烹饪 |_园艺 |_历史 |_动物学
目前,Categories的值为id、name、created_at和updated_at

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

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

如果这还不够,我可以提供相关文件来帮助阐明这个问题


谢谢你抽出时间来帮助我

是的,您可以,这是示例(假设您使用form_for,f作为形式变量)


如果您的类别与资源关联,并且您正试图以需要保存的表单显示所有类别。我假设您有类似于文章的资源,并且希望在保存到数据库时向文章添加类别

    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
类别{order(name::asc)}
结束
在视图中

_form.html.erb

 <%= select_tag(:category_id, options_for_select(@categories), class: "form-control", :prompt => "Select one!") %>
“选择一个!”)%

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

您可以根据属性名称按升序调用所有类别

@类别=类别。全部(:订单=>“名称ASC”)

此处“名称Asc”名称指类别名称

在rails控制台中尝试此操作。您可以看到该顺序

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