在我的 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/