Ruby on rails 如何将具有相同数据结构的多个模型中的数据合并到视图中-Rails
我们有一个应用程序,它在Rails中有一系列模型,这些模型都具有相同的数据结构。我们现在要创建一个视图,在一个表中显示来自这些模型的所有数据。将其分离为许多模型的原因是,它们都来自不同的来源 因此,作为一名管理员,我希望一起查看所有数据 此数据为只读,因此无需写入 通过控制器,我可以将每个模型的信息捕获到一个数组中,如下所示:Ruby on rails 如何将具有相同数据结构的多个模型中的数据合并到视图中-Rails,ruby-on-rails,rails-activerecord,Ruby On Rails,Rails Activerecord,我们有一个应用程序,它在Rails中有一系列模型,这些模型都具有相同的数据结构。我们现在要创建一个视图,在一个表中显示来自这些模型的所有数据。将其分离为许多模型的原因是,它们都来自不同的来源 因此,作为一名管理员,我希望一起查看所有数据 此数据为只读,因此无需写入 通过控制器,我可以将每个模型的信息捕获到一个数组中,如下所示: class WelcomeController < ApplicationController def index @dingoat = Dingoat
class WelcomeController < ApplicationController
def index
@dingoat = Dingoat.all
@dingobe = Dingobe.all
end
end
<% @dingoat.each do |dingoat| %>
<li><%= dingoat.ProductName %></li>
<% end %>
<% @dingobe.each do |dingobe| %>
<li><%= dingobe.ProductName %></li>
<% end %>
class WelcomeController
现在在我看来,我如何“组合”这些信息?我可以单独显示,如下所示:
class WelcomeController < ApplicationController
def index
@dingoat = Dingoat.all
@dingobe = Dingobe.all
end
end
<% @dingoat.each do |dingoat| %>
<li><%= dingoat.ProductName %></li>
<% end %>
<% @dingobe.each do |dingobe| %>
<li><%= dingobe.ProductName %></li>
<% end %>
我建议您将它们合并到一个模型中,并添加:source属性以区分源代码。也就是说,如果你真的想单独使用它们,你可以像这样组合控制器中的记录:
class WelcomeController < ApplicationController
def index
@records = Dingoat.all + Dingobe.all
end
end
<% render partial: "ding", collection: @dings %>
class WelcomeController
然后,视图简化为:
<% @records.each do |record| %>
<li><%= record.product_name %></li>
<% end %>
由于没有足够的细节来进行全面诊断,我将不尝试讨论将这些数据拆分为单独的模型是否是一个好主意,但可以说它指出了一个可能的设计问题。
但是,将所有记录放入一个公共集合中以只读方式输出是非常容易的:
def index
@dings = Dingoat.all + Dongobe.all
end
那么在视图中,我建议调用这样的分部:
class WelcomeController < ApplicationController
def index
@records = Dingoat.all + Dingobe.all
end
end
<% render partial: "ding", collection: @dings %>
那么_ding.html.erb部分可以是:
<li><%= ding.ProductName %></li>
非常感谢!当@infused回答fastestA时,将答案授予@infused很长时间,但你知道这将在ActiveAdmin中完成吗?不,但可能会有帮助。很长时间,但你知道这将在ActiveAdmin中完成吗?我没有使用ActiveAdmin。然而,我要说的是,如果你只有在最合适的时候才使用它。在我看来,它的最佳点是为一个模型提供一个简单的管理UI。如果你想走这条路,你需要将你的各种模型组合成一个模型,并以不同于单独模型的其他方式将它们区分开来。