Ruby on rails 我应该从MVC应用程序的视图中迭代业务对象吗?
我想知道在使用MVC框架时,我应该在一个视图中访问多少数据。 例如:在我的应用程序中,有一个页面显示了我最喜欢的所有艺术家的列表,以及每个艺术家的所有歌曲列表。 问题是:我应该只向视图传递艺术家列表,还是同时传递所有数据(艺术家+歌曲)Ruby on rails 我应该从MVC应用程序的视图中迭代业务对象吗?,ruby-on-rails,ruby,model-view-controller,Ruby On Rails,Ruby,Model View Controller,我想知道在使用MVC框架时,我应该在一个视图中访问多少数据。 例如:在我的应用程序中,有一个页面显示了我最喜欢的所有艺术家的列表,以及每个艺术家的所有歌曲列表。 问题是:我应该只向视图传递艺术家列表,还是同时传递所有数据(艺术家+歌曲) Ps:我正在使用Ruby On Rails和ActiveRecord。假设Artist的模型类能够提供一组歌曲,我认为没有理由要求控制器明确地将这两个都传递到视图。假设Artist的模型类能够提供一组歌曲,我认为没有理由要求控制器提供歌曲明确地将两者都传递给视图
Ps:我正在使用Ruby On Rails和ActiveRecord。假设Artist的模型类能够提供一组歌曲,我认为没有理由要求控制器明确地将这两个都传递到视图。假设Artist的模型类能够提供一组歌曲,我认为没有理由要求控制器提供歌曲明确地将两者都传递给视图。不要在视图中提取db数据-这是控制器的工作。在视图中,应仅引用控制器方法加载的数据 在您的情况下,这意味着创建艺术家列表,使用
:include
,以便预先加载歌曲
# In your controller
@artists = Artist.find(:all, :include => :songs)
编辑针对method的评论,从视图中提取数据存在两个问题:
- 关注点分离。这就是我说的,当我说你“应该”只拉控制器中的数据时——在MVC中,控制器处理数据访问,理论上,视图不包含逻辑。有时在视图中放置一些数据检索当然更容易,但很快就会变得难看
- 效率,无论是查询数量还是查询结果大小,我认为这就是该方法所讨论的。如果您在一个页面中加载了足够多的数据,这就成了一个问题,我想知道这是否意味着需要进行重构(或者至少分页)
- 不要在视图中提取db数据-这是控制器的工作。在视图中,应仅引用控制器方法加载的数据
在您的情况下,这意味着创建艺术家列表,使用
:include
,以便预先加载歌曲
# In your controller
@artists = Artist.find(:all, :include => :songs)
编辑针对method的评论,从视图中提取数据存在两个问题:
- 关注点分离。这就是我说的,当我说你“应该”只拉控制器中的数据时——在MVC中,控制器处理数据访问,理论上,视图不包含逻辑。有时在视图中放置一些数据检索当然更容易,但很快就会变得难看
- 效率,无论是查询数量还是查询结果大小,我认为这就是该方法所讨论的。如果您在一个页面中加载了足够多的数据,这就成了一个问题,我想知道这是否意味着需要进行重构(或者至少分页)