2012-07-12 50 views
1

我在我的应用程序中有一个表格,它当前按创建顺序显示项目。我希望他们按日期顺序排序我的日期属性(<%= 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> 

谢谢!

+0

T让他们从数据库中排序。 – 2012-07-12 22:08:25

+0

,我可以做到这一点..添加控制器代码 – js111 2012-07-12 22:09:58

+0

阅读此:http://stackoverflow.com/questions/3393687/how-do-i-set-a-default-sort-order-for-a-rails-模型 – 2012-07-12 22:14:35

回答

3

你一定有这个,对不对?

class User < ActiveRecord::Base 
    has_many :occassions 
end 

可以更改has_many到:

has_many :occasions, order: 'dateg desc' 
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|