我有一个循环(针对 @dataset 中的项目),我希望在每次迭代中从另一个表中获取不同的数据并进行一些将在 View 中打印的操作。我无法从循环中使用的数据集中获取此数据。
如何根据 MVC 执行此操作?我可以将代码放入循环中,在 View 中,但我认为这太可怕了。
我必须使用助手来执行此操作,并从 View 中调用该函数吗?
最佳答案
如果你有一个表,想从另一个表中获取数据,通常是在has_many
关系的情况下。例如,我们有 @people
(Person
模型),每个人都有 has_many
地址(Address
模型)。在这些情况下,最好的办法就是这样做
# Controller
@people = Person.find(:all, :include => :addresses)
...
# View
@people.each do |p|
p.addresses.each do |address|
...
如果您的数据不仅仅是普通的数据库表(也许您是从网络服务等获取的),那么最好的做法是提前在 Controller 中构建所有数据,然后将其传递到 View 。像这样
# 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 代码保持干净,像这样:
# View
@people.each do |p|
p.addresses.each do |address|
...
关于ruby-on-rails - rails : getting data from a table for each iteraction of a loop,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/281123/