【问题标题】:How can I order the items in my collection_select form field?如何订购我的 collection_select 表单字段中的项目?
【发布时间】:2011-06-28 18:00:56
【问题描述】:

这应该很容易查找,但我似乎在文档中的任何地方都找不到它。

到目前为止,选择中呈现的所有内容都按 id 排序,但我希望它呈现一个按字母顺序排列的列表(以使其更易于人工扫描)。

我目前用来生成选择的代码:

<%= f.collection_select :item_id, Item.all, :id, :name %>

适用于项目任何属性的通用答案的业力点数(不只是按字母顺序:名称)。

目前使用 Rails v 3.0.5

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 forms


    【解决方案1】:

    您可以像设置默认排序的其他答案一样在模型中执行此操作:

    has_many :items, :order => "some_col DESC"
    

    或者如果需要偏离默认顺序,也可以在控制器中设置,在视图中访问:

    controller.rb

    def index
      @items = Item.all(:order => 'some_col DESC')
    end
    

    index.erb


    另一种选择是您可以在模型中创建一个命名范围以进行排序:

    item.rb

    named_scope :alphabetically, :order => "some_col DESC"
    

    index.erb

    <%= f.collection_select :item_id, Item.alphabetically, :id, :name %>
    

    【讨论】:

      【解决方案2】:

      还有另一个问题here 可能会有所帮助,尽管我还没有尝试过。如果您尝试基于此示例(来自上一个站点),希望表单中的排序对您有用:

      class Log < ActiveRecord::Base
        has_many :items, :order => "some_col DESC"
      end
      

      【讨论】:

        猜你喜欢
        • 2023-04-05
        • 1970-01-01
        • 2015-07-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多