【问题标题】:Sorting alphabetically on select in rails using formtastic?使用formtastic在rails中按字母顺序排序?
【发布时间】:2014-04-02 03:34:00
【问题描述】:

我有一堆状态需要使用 formtastic 在 Rails 中按字母顺序排序。有一个小警告。在 states 表中,我有一个带有“N/A”的州名。 'N/A' 必须首先使用选择表单辅助方法收集所有状态。这是我目前的代码:

f.input :state, :as => :select, :collection => State.all, :include _blank => false

如何将“N/A”状态名称放在集合顶部,然后按字母顺序排列其余状态?示例:'N/A, Alabama, Alaska, etc....'.

感谢大家的帮助/线索。

【问题讨论】:

    标签: ruby-on-rails sorting


    【解决方案1】:

    试试:

    f.input :state, 
            :as => :select, 
            :collection => State.all.sort_by(&:name), 
            :prompt => 'N/A'
    

    使用State.all.sort_by(&:name)按状态名称属性排序,使用prompt: 'N/A'N/A显示为select中的第一个选项。

    或者,使用以下命令在数据库中排序:

    f.input :state, 
            :as => :select, 
            :collection => State.order(:name), 
            :prompt => 'N/A'
    

    【讨论】:

    • 谢谢。但是,即使有提示,“N/A”也会一直显示在集合中间。
    • 只有当您的状态名称为 N/A 时才有可能。如果要过滤掉数据库表中的N/A,可以将State.all.sort_by(&:name) 替换为State.where("name <> 'N/A'").order(:name)
    • 有没有办法强制提示?我仍然在集合中间收到“N/A”。
    • @NicholasAlek,我现在不确定是否可以帮助您调试,这很可能是数据问题。您能否检查以确保查询 State.where("name <> 'N/A'").order(:name) 返回您对 rails console 的期望?要检查的另一件事是,N/A 是在数据库中使用还是在某处被覆盖?
    • 谢谢你。我真是太愚蠢了,我忘了说,这是一个 Rails 2.3 应用程序,很遗憾。
    猜你喜欢
    • 1970-01-01
    • 2020-03-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-08-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多