Ruby on rails RubyonRails教程:Can';t显示用户';s微柱

Ruby on rails RubyonRails教程:Can';t显示用户';s微柱,ruby-on-rails,ruby-on-rails-3,Ruby On Rails,Ruby On Rails 3,在阅读“RubyonRails3教程”时,我试图找出第11章中的错误,因为我无法通过清单11.15中的测试 因此,我被困在第11.2.1节。由于我无法使用它,我决定忽略这一点,继续进行下去:为前六个用户填充50个微操作,然后尝试访问用户的显示页面。我得到了以下错误页面: NoMethodError in Users#show Showing <my_path>/sample_app/app/views/users/show.html.erb where line #10 raise

在阅读“RubyonRails3教程”时,我试图找出第11章中的错误,因为我无法通过清单11.15中的测试

因此,我被困在第11.2.1节。由于我无法使用它,我决定忽略这一点,继续进行下去:为前六个用户填充50个微操作,然后尝试访问用户的显示页面。我得到了以下错误页面:

NoMethodError in Users#show

Showing <my_path>/sample_app/app/views/users/show.html.erb where line #10 raised:

undefined method `model_name' for NilClass:Class
Extracted source (around line #10):

7:       </h1>
8:       <% unless @user.microposts.empty? %>
9:         <table class="microposts" summary="User microposts">
10:           <%= render @microposts %>
11:         </table>
12:         <%= will_paginate @microposts %>
13:       <% end %>
NoMethodError在用户中#显示
显示/sample#u app/app/views/users/show.html.erb,其中第10行出现:
NilClass:Class的未定义方法“model_name”
提取的源(第10行附近):
7:       
8:       
9:         
10:           
11:         
12:         
13:       
在反复试验的情况下,出于某种原因,实例变量@MicroPost似乎为零。看起来好像“userscoontroller.show”方法没有完成创建该实例变量的工作。但是,我可以验证是否执行了此方法,因为我可以成功访问用户的显示页面,前提是他没有任何micropost


在这一步,很难给出更多的提示。但是我可以告诉你,所有其他的测试都通过了。

可能是
@user.microposts
?第8行检查是否存在?

尝试将所有出现的@microspots替换为@user.microspots


您的控制器操作中是否定义了@MicroPost?或者@user是在控制器操作中定义的?因为@user.microposts可能与@microposts(从这个上下文中)是一样的,除非您为相关的user.microposts对象声明了一个变量,否则您可能试图访问一个不存在的变量

好吧,有了这些类型的错误,就有一个愚蠢的错误在某处蔓延

遵循ruby.railstutorial.org网站的建议。我确实将我的代码与作者的代码进行了比较。猜猜看,在我的UsersController版本中,“show”方法有两种定义!文件底部的第二个实例没有为@microposts实例变量赋值

如果我必须编译这个东西,这个bug就会被发现。我想一定有办法用ruby语法检查器扫描rails站点

无论如何,谢谢其他人的建议