Rails - 未定义的方法`title'

时间:2014-05-06 22:52:22

标签: ruby-on-rails ruby

我尝试使用Getting Started with Rails学习一些Rails基础知识,但我似乎无法传递错误:

undefined method `title' for nil:NilClass

Showing /blog/app/views/articles/show.html.erb where line #3 ...

我有Ruby 1.9.3和Rails 4.1.0。

我的 views / articles / show.html.erb 如下所示:

<p>
  <strong>Title:</strong>
  <%= @article.title %>   # line #3
</p>

<p>
  <strong>Text:</strong>
  <%= @article.text %>
</p>

我的 controllers / articles_controller.rb 看起来像这样:

class ArticlesController < ApplicationController

  def index
  end

  def create
    @article = Article.new(article_params)

    @article.save
    redirect_to @article
  end

  private
    def article_params
      params.require(:article).permit(:title, :text)
    end

  def new
  end

  def show
    @article = Article.find(params[:id])
  end

end

每当我尝试通过 / articles / new

创建新帖子时,都会弹出错误

2 个答案:

答案 0 :(得分:6)

您面临的主要问题是您的新&amp; show方法是私密的,因为它们来自私人&#39;你班上的宣言。

移动新代码和代码显示在您班级中的私人声明之上,您应该让事情发挥作用。此外,将文章参数传递给show for show,因为您正在使用强参数。

class ArticlesController < ApplicationController

  def index
   end

   def create
     @article = Article.new(article_params)

     @article.save
     redirect_to @article
   end


   def new
   end

   def show
     @article = Article.find(article_params)
   end

   private
     def article_params
       params.require(:article).permit(:title, :text)
     end

end

答案 1 :(得分:0)

检查文章是否已创建 - 因为它是nil:NilClass我想请注意。

尝试在新方法中添加以下内容:

def new
     @article = Article.new
end

如果仍然无法解决问题,请发布新视图&amp;保存项目时的服务器输出。