我想将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>
答案 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| %>