无法找到带有'id'= 1和未定义方法`title'的文章,用于nil:Rails app中的NilClass

时间:2015-02-18 19:32:04

标签: ruby-on-rails ruby

我一直关注JumpStartLab Blogger 2项目,并且我坚持看似简单的事情。 I'm at this point只需向上滚动显示

的页面
@article = Article.find(params[:id])

基本上我已经将所有内容都放在了发球台上(我认为),在点击其中一篇文章的链接后刷新浏览器后,我得到以下错误:

  

在ArticlesController#show中显示ActiveRecord :: RecordNotFound

     

无法找到带有' id' = 1

的文章

我的Articles_controller.rb看起来像这样

class ArticlesController < ApplicationController

  def index
    @articles = Article.all
  end

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

end

我的index.html.erb看起来像这样

<h1>All Articles</h1>

    <ul id="articles">
    <% @articles.each do |article| %>
        <li>
            <%= link_to article.title, article_path(article), class: 'article_title', id: "article_#{article.id}" %>
        </li>
    <% end %>

</ul>

<%= link_to "Create a New Article", new_article_path, class: "new_article" %>

我的show.html.erb看起来像这样。

<h1><%= @article.title %></h1>
<p><%= @article.body %></p>
<%= link_to "<< Back to Articles List", articles_path %>

相当困在这里,无法弄明白。我还注意到另一个问题。起初我忘记了

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

我被这个错误所困扰,我猜想在我弄清楚第一个问题后会回来。

  

文章中的NoMethodError#show show.html.erb第1行引出:

     

未定义的方法`标题&#39;为零:NilClass

我已经查到了类似的问题,但他们似乎都比我更深入了解这个项目并谈论私人方法,我不认为我还在处理。我发布了这两个问题,因为我不确定它们是否相关。任何建议都会帮助我,因为这真的让我失望。感谢。

2 个答案:

答案 0 :(得分:1)

根据您显示的代码,如果链接出现在您的索引页面上,则应该无法发生,那么您的show方法应该能够找到它。

也许你的索引页面已经过时,或者使用了一些不再有效的缓存。尝试重新加载页面,或重新启动服务器(如果这样做,请确保运行spring stop以便完全重启),我也会运行rake tmp:clear清除缓存,以防万一

答案 1 :(得分:0)

我在udemy课程中遇到了同样的错误,我在重定向路径时没有添加复数形式的文章。我打字了

  

<强> article_path(物品)

而不是

  

<强> articles_path(物品)

我希望这有助于某人。