我正在构建一个下拉菜单,在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”
如果这还不够,我可以提供相关文件来帮助解决问题。
感谢您抽出时间来帮助我!
答案 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控制台中尝试此操作..您可以看到该订单