Rails 3 - 关联 - 它是如何工作的?
Posted
技术标签:
【中文标题】Rails 3 - 关联 - 它是如何工作的?【英文标题】:Rails 3 - associations - how it work? 【发布时间】:2011-09-07 11:18:30 【问题描述】:我试图了解关联的行为,但我做错了。
我有这两个模型:
class Album < ActiveRecord::Base
has_many :photos
end
class Photo < ActiveRecord::Base
belongs_to :album
end
这意味着一个相册可以有很多张照片,每张照片都属于一个相册。
现在,如果我在视图中有这段代码(假设我在控制器中设置了@album = 106
,也就是专辑的 ID 号):
@album.photos.each_with_index do |pic, index|
...
end
我得到了错误:ActionView::Template::Error (undefined method 'photos' for 106:Fixnum):
为什么我会收到此错误消息?我以为我必须设置相册的@album
变量ID,然后循环将通过album_id
(album_id=106) 搜索表Photos
中的照片。
我做错了什么?
【问题讨论】:
最好使用局部渲染每张照片,因为这样可以分隔视图的“构建块”。 render @album.photos 将为相册中的每张照片渲染一次“photos/_photo.html.erb”视图。 【参考方案1】:您必须获取模型实例才能获取关联,如下所示:
@album = Album.find(106)
要按创建日期对照片进行排序,请执行以下操作:
@album.photos.order('created_at DESC').each_with_index do |pic, index|
...
end
【讨论】:
是的,没错,谢谢。我想问你一个问题 - 现在它可以工作了,我终于从表中获取数据Photos
- 可以设置each
循环,从表中选择数据的方法是什么?例如,最低 ID 的隐式方式,但我需要到最新的时间......这可能是这样的说法吗?
我越来越喜欢 RoR!谢谢伯努瓦。以上是关于Rails 3 - 关联 - 它是如何工作的?的主要内容,如果未能解决你的问题,请参考以下文章
需要 jquery 如何在 Rails 3 应用程序中工作?