2015-05-29 58 views
0

我在我的表中使用datetime字段类型的content_date行。我想使用此字段来订购我的数据(content_items)。按日期时间订购数据在Rails中输入

模型/ content_item.rb

class ContentItem < ActiveRecord::Base 
    belongs_to :calendar 
end 

模型/ calendar.rb

class Calendar < ActiveRecord::Base 
    has_many :content_items 
end 

控制器/ content_items_controller.rb

def index 
    @calendar = Calendar.find(params[:calendar_id]) 
    end 

我尝试这样做,但没有成功:

控制器/ content_items_controller.rb

def index 
    @calendar = Calendar.find(params[:calendar_id]) 
    @content_item = @calendar.content_items.order(content_date: :desc) 
    end 

Github上链接:https://github.com/JeremyEnglert/baked

+0

'content_date'是一个字段或'ContentItem'?如果是这样,最新的查询是正确的。你遇到什么错误? –

+0

正确,content_date是content_items的一个字段。没有错误,数据根本不会改变顺序。 – JeremyE

+0

@JeremyE你的查询应该可以正常工作..从你的控制台显示这个'@ calendar.content_items.order(content_date :: desc)'的SQL .. –

回答

3

这应该可以解决这个问题:

@content_item = @calendar.content_items.order('content_date desc') 

UPDATE

我检查你的GitHub库。您没有在控制器中使用实例变量来显示内容项目。你必须改变:

应用程序/视图/ content_items/index.html.erb

<% @calendar.content_items.each do |content_item| %> 

到:

<% @content_item.each do |content_item| %> 
+0

没有运气。它不会抛出错误,但数据不会排序。 – JeremyE

+0

你真棒。像魅力一样工作。 – JeremyE

0
@content_items = Calendar.includes(:content_items).order('content_items.content_date desc') 

这将解决您的问题。

+0

这是不正确的。它会简单地返回匹配给定id的日历,所有的项目都会被延迟加载。 –

+0

我加入到我现有的索引方法中,没有运气。如果我删除'@calendar = Calendar.find(params [:calendar_id])',则会导致其他错误。 – JeremyE

+0

只需在导轨控制台中执行上述操作,并检查 –