ActiveRecord中第一个和第二个的替代语法是什么

时间:2016-02-10 04:45:36

标签: ruby-on-rails ruby activerecord

<div class="col-md-12 col-sm-12 pad-0 col-hover">
    <div class="col-md-2 col-sm-2 pad-10 ">
        <img class="img1"  src="/assets/choose-style/img1.png">
    </div>
    <div class="col-md-8 col-sm-8">
        <h5><%= CaricatureType.first.name %></h5>
        <p class="text-color">
            <%= CaricatureType.first.description %>
        </p>
    </div>
    <div class="col-md-2 col-sm-2 roundedTwo">
        <input type="radio" value="None" id="roundedTwo" name="check" />
        <label for="roundedTwo"></label>
    </div>
</div>

我有几个像这样的div,但在上面的例子中,我像这样硬编码 CaricatureType.first.name 。但我想在for循环中执行此操作,如果有一种语法可以执行CaricatureType[0].name

之类的操作

3 个答案:

答案 0 :(得分:3)

不要在视图中编写业务逻辑,而是可以使用实例变量。

在您的控制器中:

@caricature_type = CaricatureType.all

然后在您的视图中,您可以使用此实例变量。

<% @caricature_type.each do |caricature_type| %>
   <div class="col-md-8 col-sm-8">
      <h5><%= caricature_type.name %></h5>
      <p class="text-color">
         <%= caricature_type.description %>
     </p>
   </div>
<% end %>

答案 1 :(得分:1)

以下是一些想法。假设您要迭代所有CaricatureType条记录。那就像

<% CaricatureType.all.each do |caricature_type| %>
  <div class="col-md-8 col-sm-8">
     <h5><%= caricature_type.name %></h5>
     <p class="text-color">
       <%= caricature_type.description %>
     </p>
  </div>
<% end %>

或者,如果您想要前10条记录,那么:

<% CaricatureType.first(10).each do |caricature_type| %>

注意:是的,不在视图中放置任何模型查询是可以接受的。将它们保存在呈现当前视图/部分的控制器的相应操作中,然后在视图中使用这些实例变量。我只想在这个答案中告诉你,你正面临的问题是什么。因此,您将查询结果存储在控制器操作中的@caricature_types内,然后使用它进行迭代。

答案 2 :(得分:0)

client = Client.first(numerical value)

如果数值为2,则返回前2条记录

client = Client.first(2)
=> [ <Client id: 1, first_name: "Lifo">, <Client id: 2, first_name: "Fifo">]