【发布时间】:2014-07-30 15:03:49
【问题描述】:
我遵循了 Rails 入门教程,创建了文章和 cmets MVC,并希望将类别标签添加到我的应用程序中。我重复了教程中的步骤(创建 cmets)并启动并运行了类别(可以通过articles/show.html.erb 创建和查看类别)。但是,当我尝试添加部分以查看已创建的所有类别并在主页(articles/index.html.erb)上使用部分时,我收到以下错误
Showing /Users/szymonborucki/ruby_apps/workspace/newspaper/app/views/articles/_sidebar_categories.html.erb where line #2 raised:
undefined method `each' for nil:NilClass
Extracted source (around line #2):
<h2>Browse by categories: </h2>
<% @categories.each do |c| %>
<p><%= c.category %></p>
<% end %>
这里是部分(_sidebar_categories.html.erb)
<h2>Browse by categories: </h2>
<% @categories.each do |c| %>
<p><%= c.category %></p>
<% end %>
categories_controller.rb
class CategoriesController < ApplicationController
def index
@categories = Category.all
end
def create
@article = Article.find(params[:article_id])
@category = @article.categories.create(category_params)
redirect_to article_path(@article)
end
def destroy
@article = Article.find(params[:article_id])
@category = @article.categories.find(params[:id])
@category.destroy
redirect_to article_path(@article)
end
private
def category_params
params.require(:category).permit(:category)
end
end
Category.rb 模型
class Category < ActiveRecord::Base
belongs_to :article
end
文章 index.html.erb
<div class="container">
<h1>Listing articles</h1>
<% @articles.each do |article| %>
<div class="row">
<div class="col-sm-8">
<h2><%= article.title %></h2>
</div>
</div> <!-- .row -->
<div class="row">
<div class="col-sm-8">
<p><%= article.content %></p>
</div>
</div> <!-- .row -->
<div class="row">
<div class="col-sm-8">
<!-- <ul class="list-unstyled"> -->
<button type="button" class="btn btn-primary btn-lg"><%= link_to 'Show', article %></button>
<button type="button" class="btn btn-success btn-lg"><%= link_to 'Edit', edit_article_path(article) %></button>
<button type="button" class="btn btn-danger btn-lg"><%= link_to 'Delete', article, method: :delete, data: { confirm: 'Are you sure?' } %></button>
</div>
</div> <!-- .row -->
<% end %>
</div> <!-- .container -->
<% content_for :aside do %>
<%= render 'sidebar_popular' %>
**<%= render 'sidebar_categories' %>**
<% end %>
我该如何解决这个问题?
【问题讨论】:
标签: ruby-on-rails ruby-on-rails-4