将多个模型组合到一个视图Rails中

时间:2015-09-06 06:12:58

标签: ruby-on-rails ruby

我想将4个模型的数据显示在一个视图中。我为这个名为posts_controller.rb创建了一个单独的控制器,在视图中我创建了posts文件夹并创建了index.html.erb文件。

之后在控制器文件中我添加了以下代码。

 class PostsController < ApplicationController

    def index
        @quotes = Quote.all.order("created_at DESC")
        @images = Image.all.order("created_at DESC")
        @jokes = Joke.all.order("created_at DESC")

        @items = (@quotes.to_a + @jokes.to_a)
    end
end

以下是我正在尝试显示2项数据的视图文件。但它不起作用。请检查代码。

<% if @items.any? %>

  <div class="col-md-12">
    <% @items.each.do |item| %>
      <% if item.is_a? Quote %>

      <div class="postbg">

              <%= quote.quotefie %>
              <div class="wedate pull-right wehi">
              <%= quote.created_at.strftime("%b %d, %Y") %>
            </div>
            <div class="clearfix"></div>
              <em class="pull-right wehi" style="margin-top:20px;"> - <%= quote.author %></em>
              <%= link_to 'Show', quote %>
              <%= link_to 'Edit', edit_quote_path(quote) %>
              <%= link_to 'Destroy', quote, method: :delete, data: { confirm: 'Are you sure?' } %>
         </div>
    <% else %>

       <% @jokes.each do |joke| %>

       <div class="postbg">

              <%= joke.jokefie %>
              <div class="wedate pull-right wehi">
              <%= joke.created_at.strftime("%b %d, %Y") %>
            </div>
            <div class="clearfix"></div>
              <%= link_to 'Show', joke %>
              <%= link_to 'Edit', edit_joke_path(joke) %>
              <%= link_to 'Destroy', joke, method: :delete, data: { confirm: 'Are you sure?' } %>
         </div>

         <% end %>
         <% end %>
  </div>

<% end %>

这是它显示的错误。

undefined method `do' for #<Enumerator:0x007fd55fb032b8>

2 个答案:

答案 0 :(得分:0)

你的问题在这一行:

<% @items.each.do |item| %>

do定义一个块,而不是一个方法调用,所以它应该是:

<% @items.each do |item| %>

请注意已删除的.

当您使用do时,您已在视图中正确使用了@jokes.each do |joke|

答案 1 :(得分:0)

这一行

<% @items.each.do |item| %>

应该是

<% @items.each do |item| %>