ruby-on-rails - rails group by 和 order by column

标签 ruby-on-rails ruby activerecord

在我的 Controller 中,我得到了按类别分组的所有 Extras:

def index
  @categories = Extra.all.group_by(&:category)
end

结果类似于哈希数组:

{#<Category id:1, sort:2> => [#<Extra id:1>,#<Extra id:2],
 #<Category id:2, sort: 1> => [#<Extra id:3>,#<Extra id:4>]}

我想按类别“排序”列而不是 id 排序,它应该如下所示:

{#<Category id:2, sort:1> => [#<Extra id:3>,#<Extra id:4],
 #<Category id:1, sort: 2> => [#<Extra id:1>,#<Extra id:2>]}

当我尝试时:

def index
  @categories = Extra.all.group_by(&:category).sort_by{|s| s[:sort]}
end

我得到“没有将符号隐式转换为整数”。那是因为我在“sort_by”中使用了一个符号吗?

最佳答案

试试这个,group_by会还你hash你正试图调用 [:sort][#<Category id:2, sort:1>, [#<Extra id:3>,#<Extra id:4]] 的数组上

你应该把它们放在两个变量中 |key, value|关键是category

def index
  @categories = Extra.all.group_by(&:category).sort_by{|category, _extras| category.sort }
end

关于ruby-on-rails - rails group by 和 order by column,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44179980/

相关文章:

ruby-on-rails - ActiveRecord::ConnectionTimeoutError:无法在 5.000 秒内从池中获取连接。所有池连接都在使用中

mysql - 与 Rails 一起迷失 has_many : through multiple search

ruby-on-rails - 如何将特定的 ruby​​ gem 升级到特定(或最新)版本?

ruby-on-rails - ruby on Rails - 如何在路线、 Controller 、 View 中建立关系?有很多,属于

ruby-on-rails - emberjs 和 Foundation4

ruby - Cucumber 2.0.0 与 RubyMine 6.x 和 TeamCity 格式化程序不兼容

ruby-on-rails - Rails accepts_nested_attributes计数验证

ruby-on-rails - 辅助方法如何生成 rails 3 中的 block ?

lib中的Ruby gems - 备胎原理

Ruby:没有类的 'new'