我想知道在使用MVC框架时我应该在View中进行多少数据访问。 例如:在我的应用程序中,有一个页面显示所有我最喜欢的艺术家的列表,并且对于每个艺术家,列出该艺术家的所有歌曲。 问题是:我应该只将艺术家列表传递给视图,还是应该传递所有数据(艺术家+歌曲)?
Ps:我正在使用Ruby On Rails和ActiveRecord。
答案 0 :(得分:3)
不要在视图中提取数据 - 这是控制器的工作。在视图中,您应该只引用控制器方法加载的数据。
在您的情况下,这意味着使用:include
创建艺术家列表,以便预先加载歌曲。
# In your controller
@artists = Artist.find(:all, :include => :songs)
编辑为了回应方法的评论,从视图中提取数据存在两个问题:
答案 1 :(得分:2)
假设Artist的模型类有提供歌曲集合的方法,我认为没有理由要求控制器明确地将两者都传递给视图。