【问题标题】:Alphabetical Sort collection objects by custom model method按自定义模型方法按字母顺序排序集合对象
【发布时间】:2013-08-25 20:02:39
【问题描述】:

我的User 模型中有一个名为display_name 的方法。在我的控制器中,我想按字母顺序按display_name 对所有User 对象进行排序。 display_name返回一个字符串,我该怎么做?

用户

  def display_name
      if !addressbook.b_company.nil?
        if addressbook.b_company.downcase[0..3] == "the "
                addressbook.b_company[4..-1]
        else
                addressbook.b_company
        end
      else
          "#{addressbook.b_lastname}, #{addressbook.b_firstname}"
      end
  end

【问题讨论】:

  • 我已经在使用这个 gem:github.com/versioneye/naturalsorter 来对我的应用程序中的各种内容进行排序。如果没有其他方法,我不介意使用这个宝石。
  • 你的代码有点味道:你不需要在读取属性时使用self,此外,关键字return在ruby中是可选的,可以删除,因为所有方法将返回最后评估的表达式

标签: ruby-on-rails sorting methods collections models


【解决方案1】:

使用sort_by 并将您的方法传递给它:

@users.sort_by(&:display_name).each do |user|
  # your code here
end

【讨论】:

  • 这不起作用,undefined method each' for nil:NilClass` (@users) 我有@users = User.all 然后@users.sort_by(&:display_name) 在我的索引操作中
  • 另外,.each 迭代器在视图中被调用,所有的语法都是正确的
  • 它抱怨@users 为零,你确定不是吗?
  • 看来我的问题出在别处
猜你喜欢
  • 2011-03-30
  • 2012-02-12
  • 2014-10-13
  • 2023-01-30
  • 2012-11-02
  • 1970-01-01
  • 2022-06-12
  • 1970-01-01
  • 2023-01-30
相关资源
最近更新 更多