我有一个循环(对于@dataset中的项目),我想在每次迭代中从另一个表中获取不同的数据,并进行一些将在视图中打印的操作.我无法从循环中使用的数据集中获取此数据.
我怎么能根据MVC做到这一点?我可以将代码放入循环中,在视图中,但我认为这很糟糕.
我必须使用助手才能执行此操作,并从视图中调用该函数吗?
先感谢您,
- ARemesal
如果您有一个表,并且想要从另一个表中获取数据,通常这是一种has_many
关系的情况.例如,我们有@people
(Person
模型),每个人都在has_many
地址(Address
模型).在这些情况下,最好的办法就是这样做
# Controller @people = Person.find(:all, :include => :addresses) ... # View @people.each do |p| p.addresses.each do |address| ...
如果您的数据不仅仅是普通的数据库表(也许是从Web服务等获得),那么一件好事就是提前在控制器中构建所有数据,然后将其传递给视图.像这样的东西
# Controller @people = Person.find(:all) @people.each do |p| # attach loaded data to the person object in controller p.addresses = Address.load_from_somewhere_by_name(p.name) ...
这样,视图代码保持干净,如下所示:
# View @people.each do |p| p.addresses.each do |address| ...