按栏列表中的日期属性排序

时间:2012-07-12 22:07:11

标签: ruby-on-rails ruby ruby-on-rails-3 erb

我的应用中有一张表,目前按照创建顺序显示项目。我希望他们按时间顺序按我的日期属性(<%= o.dateg%>)排序。什么是正确的轨道方式来做到这一点?

控制器:

def show
 @occasion = Occasion.find(params[:id])
end

查看:

   <% @user.occasions.each do |o| %>
          <td><%= o.name %></td>
          <td><%= o.pname %></td>
          <td><%= o.dateg %></td>

谢谢!

2 个答案:

答案 0 :(得分:3)

你必须拥有它,对吗?

class User < ActiveRecord::Base
  has_many :occassions
end

您可以将has_many更改为:

has_many :occasions, order: 'dateg desc'

答案 1 :(得分:3)

在视图中,您可以使用sort例如

@user.occasions.sort {|a,b| b.dateg <=> a.dateg }.each do |o|

(这将按时间顺序反向)

但是你应该在不在视图中的模型中执行此操作,命名范围可以正常工作:

class User < ActiveRecord::Base
  has_many :occasions
  scope :recent_occasions, order('dateg desc')
end

然后使用

@user.recent_occasions.each do |o|