如何将来自具有相同数据结构的许多模型的数据组合到视图中 - Rails

时间:2014-08-26 18:29:25

标签: ruby-on-rails rails-activerecord

我们有一个应用程序在Rails中有一系列模型,它们都具有相同的数据结构。我们现在要创建一个视图,在一个表中一起显示这些模型的所有数据。分离成许多模型的原因是它们都来自不同的来源。

作为管理员,我想一起查看所有数据。

此数据是只读的,因此无需编写。

使用控制器,我可以将每个模型中的信息捕获到一个数组中,如下所示:

class WelcomeController < ApplicationController
  def index
    @dingoat = Dingoat.all
    @dingobe = Dingobe.all  
  end
end

现在我认为,我如何结合&#39;此信息?我可以单独展示它,如下:

<% @dingoat.each do |dingoat| %>
  <li><%= dingoat.ProductName %></li>
<% end %>
<% @dingobe.each do |dingobe| %>
  <li><%= dingobe.ProductName %></li>
<% end %>

2 个答案:

答案 0 :(得分:1)

我建议您将这些组合到一个模型中并添加:source属性来区分源。话虽如此,如果你真的想与他们分开合作,你可以将控制器中的记录组合起来:

class WelcomeController < ApplicationController
  def index
    @records = Dingoat.all + Dingobe.all
  end
end

然后视图简化为:

<% @records.each do |record| %>
  <li><%= record.product_name %></li>
<% end %>

答案 1 :(得分:1)

由于没有足够的细节来完全诊断,我不会尝试讨论是否将这些数据拆分成单独的模型实际上是一个好主意,但足以说它指向一个可能的设计问题。 但是,将所有记录放入公共集合以便以只读方式输出非常容易:

def index
  @dings = Dingoat.all + Dongobe.all
end

然后在视图中我建议调用这样的部分:

<% render partial: "ding", collection: @dings %>

然后_ding.html.erb部分可能是:

<li><%= ding.ProductName %></li>