我有一个班级User
:
class user class User < ActiveRecord::Base
attr_accessible :username, :password
end
我的数据库中还有三个用户:
id username password
1 user5 pw5
2 user3 pw3
3 user2 pw2
我的观点如下:
<% @users.each do |user| %>
<%= User.username %>, <%= user.password %> <br />
<% end %>
输出数据按用户的行ID进行排序:
user5, pw5
user3, pw3
user2, pw2
如何输出按username
排序?
user2, pw2
user3, pw3
user5, pw5
答案 0 :(得分:1)
您可以使用sort按username
进行比较:
@users.sort { |x, y| x.username <=> y.username }.each do |user|
# Your code
end
此外,假设您使用ActiveRecord从数据库中提取记录,您还可以使用order进行查询,这将是一个更好的选择,因为数据库旨在处理这种类型的事情。 :d
在您的控制器中:
@users = User.order('username DESC')
答案 1 :(得分:1)
ASC订单
<% @users.sort_by{|e| e[:username]}.each do |user| %>
<%= user.username %>, <%= user.password %> <br />
<% end %>
DESC订单
<% @users.sort_by{|e| e[:username]}.reverse.each do |user| %> <!-- or you can use @users.sort_by{|e| -e[:username]} -->
<%= user.username %>, <%= user.password %> <br />
<% end %>
答案 2 :(得分:0)
在控制器中我认为你的代码就像
@users = User.all
您可以将其更改为
@users = User.order(:username)
现在无需更改视图,它将是相同的
<% @users.each do |user| %>
<%= User.username %>, <%= user.password %> <br />
<% end %>
答案 3 :(得分:-1)
<% @users.sort{|u1,u2| u1.username <=> u2.username).each do |user| %>
<%= user.username %>, <%= user.password %> <br />
请参阅sort
文档。