我在控制器中执行此查询,而"组"模型has_many用户
@group= Group.find(params[:id])
Run Code Online (Sandbox Code Playgroud)
@group用于呈现此部分(部分用户转储到表中)
<%= render :partial=>"user_list", :locals=>{:users=>@group.users} %>
Run Code Online (Sandbox Code Playgroud)
传递给partial的局部变量'users'是一个User对象数组;
- !ruby/object:User
attributes:
updated_at: 2011-01-04 21:12:04
firstname: Bob
lastname: Smith
id: "15"
group_id: "2"
created_at: 2010-11-26 12:54:45
Run Code Online (Sandbox Code Playgroud)
如何通过'lastname'对用户数组进行排序?没试过,我尝试了几种不同的方法.试图按照数组中的对象属性进行排序让我感到困惑.另外,我不知道如何通过以下方式执行此操作:查询中的顺序(如何:不是命令组而是命令每个组的用户)?
也许我没有正确引用对象的名称('用户')?看起来这应该是有效的,因为它会产生'无方法'错误(如果在没有!的情况下使用'sort_by',则会产生动态常量赋值错误):
users.sort_by! {|User| User.lastname}
Run Code Online (Sandbox Code Playgroud)
谢谢你的帮助.
Ren*_*eno 36
我发现了一种可以在这里工作的方法.我不明白"&"符号在做什么 - 也许它是"对象"的简称,因为在我的情况下":lastname"是构成数组的对象的属性.
users = users.sort_by &:lastname
Run Code Online (Sandbox Code Playgroud)
注意:我没有说明原因,但破坏性版本不起作用.它产生一个"未定义的方法`sort_by!' 对于#"errror:
users.sort_by! &:lastname
Run Code Online (Sandbox Code Playgroud)
Bvu*_*Ic7 30
见http://ariejan.net/2007/01/28/ruby-sort-an-array-of-objects-by-an-attribute/
@users.sort! { |a,b| a.name.downcase <=> b.name.downcase }
Run Code Online (Sandbox Code Playgroud)
Gro*_*oxx 15
这可能是因为你|User|什么时候User上课了.尝试将其更改为未使用的变量名称,例如u,获取:
users.sort_by! {|u| u.lastname}
Run Code Online (Sandbox Code Playgroud)
管道之间的术语是每个项目存储在其中的变量的名称,而不是您所拥有的对象类型.这与其他Ruby块相同do || end,或者任何其他{||}样式块.
| 归档时间: |
|
| 查看次数: |
45634 次 |
| 最近记录: |