1

我正在做一个 ActiveRecord 查询,它将我的每个模型的内容连接到一个名为@contents. 但是我需要为来自特定模型的数据显示不同的内容。

所以在我看来,我需要对数组的元素进行某种测试:

<% @contents.each do |c| %>
  <article>
    <% if [TEST FOR EVENT] %>
      EVENT HTML
    <% elsif [TEST FOR POST] %>
      POST HTML
    <% end %>
  </article>
<% end %>

我如何获得c来自的模型?

4

2 回答 2

1

这可以解决问题:

c.kind_of?(Event) #=> true or false

更深入:Ruby:kind_of?与 instance_of 相比?与 is_a 相比?

我的比较的简短版本:

3.class #=> Fixnum
3.is_a? Integer #=> true
3.kind_of? Integer #=> true
3.instance_of? Integer #=> false
# is_a? & kind_of? can 'detect' subclasses, when instance_of? does not
于 2013-02-12T19:31:58.437 回答
1

您可以使用该is_a?方法。

<% if c.is_a?(Event) %>或者<% if c.is_a?(Post) %>

只需传递类名。

于 2013-02-12T19:32:36.180 回答