ruby-on-rails - rails : getting data from a table for each iteraction of a loop

标签 ruby-on-rails ruby model-view-controller

我有一个循环(针对 @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/

相关文章:

windows - 是否可以将 Ruby 脚本转换为 .exe 以便源代码不可见?

.net - 使用 Windows 和 Web 界面编写企业应用程序的最佳方法?

ruby-on-rails - 使用 XML 主体的 Rails API 功能测试

ruby-on-rails - 每个用户在 Rails 中使用片段缓存

javascript - TinyMCE 仅在页面刷新时加载

php - 如何多次使用一个表中的一个外键在 Laravel 中获取数据?

javascript - MVC jquery 对话框无法正常工作

ruby-on-rails - 在 has_and_belongs_to_many 中查询连接表的 Rails 方式

ruby - 当线程死亡时杀死 shell 进程

mysql - Rails 字符串唯一 ID