首页 > 解决方案 > 检索和显示 Active Record 数据

问题描述

我想在我的主页上显示一些东西,所有东西都是从数据库中的不同表中提取的,只是想看看最好的方法。

通过阅读https://guides.rubyonrails.org/v2.3.11/active_record_querying.html,我能够让它显示正确的细节,但这是最好的方法吗?这种方法是否存在性能问题?

<% about = Page.find(1) %>
<h1 class="title"><%= about.title %></h1>
<% unless about.subtitle.blank? %>
    <h2 class="subtitle"><%= about.subtitle %></h2>
<% end %>
<p><%= about.body %></p>

在类似的主题上,迭代和显示数据的最佳方式是什么?这就是我想要实现的目标:

<div class="tabs">
    <ul>
        <% Chapter.all.each do |c| %>
            <li><a><%= chapter.title %></a></li>
        <% end %>
    </ul>
</div>

非常感谢任何提示!

标签: ruby-on-rails

解决方案


为达到这个

<div class="tabs">
    <ul>
        <% Chapter.all.each do |c| %>
            <li><a><%= c.title %></a></li>
        <% end %>
    </ul>
</div>

有几件事必须存在:

第一步

您需要有一个模型或数据集来表示您的数据,例如,您可能有一个 Person.rb 文件,其中包含名称和头发颜色作为属性。这可以是你的模型,它所做的只是定义一个数据集。

class Person < ApplicationRecord
    scope :latest_Person, -> { order(date: :desc) }

    validates :name, presence: true, length: { minimum: 5 }
    validates :haircolor, presence: true
end

第二步

您需要在控制器类中声明或实例化该模型,例如您可能需要按特定顺序显示人员列表。这可以使用scopes. 例子

def persons
   # Render all persons
   @persons_all = Person.latest_Person
end

第三步

从视图中的控制器类调用声明的对象。基本上你所做的就是引用声明的对象。例子

<% if @persons_all.empty? %>
  <h2>No persons available</h2>
<% else %>
   <% @persons_all.each do |p| %>
      <p><%= p.name %></p>
      <p><%= p.haircolor %></p>
   <% end %>
<% end %>

标记为答案是否有帮助,谢谢。


推荐阅读