2010-10-14 7 views
4

que je suis le tutoriel rails @http://railstutorial.orgNoMethodError dans Utilisateurs # show

Dans le chapitre 11, je vais avoir des problèmes avec des utilisateurs montrant microposts. Selon le tutoriel, le test RSPEC devrait réussir. Cependant, il ne


1) UsersController GET 'show' should show the user's microposts 
Failure/Error: get :show, :id => @user 
undefined method `model_name' for NilClass:Class 
# ./app/views/users/show.html.erb:10:in `_app_views_users_show_html_erb__49 
# ./spec/controllers/users_controller_spec.rb:71 

Quand avec elle, j'essaye d'accéder à la page d'un utilisateur qui a microposts associé provoque une exception:

NoMethodError in Users#show 

Showing C:/Documents and Settings/XXXXX/workspace/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 %> 
Rails.root: C:/Documents and Settings/XXXXX/workspace/sample_app 

Application Trace | Framework Trace | Full Trace 
actionpack (3.0.0) lib/action_view/render/partials.rb:319:in `partial_path' 
actionpack (3.0.0) lib/action_view/render/partials.rb:207:in `setup' 
actionpack (3.0.0) lib/action_view/render/partials.rb:186:in `initialize' 
actionpack (3.0.0) lib/action_view/render/partials.rb:331:in `new' 
actionpack (3.0.0) lib/action_view/render/partials.rb:331:in `_render_partial' 
actionpack (3.0.0) lib/action_view/render/rendering.rb:31:in `render' 
app/views/users/show.html.erb:10:in `_app_views_users_show_html_erb__49899798_36559632_0' 
actionpack (3.0.0) lib/action_view/template.rb:135:in `send' 
actionpack (3.0.0) lib/action_view/template.rb:135:in `render' 
activesupport (3.0.0) lib/active_support/notifications.rb:54:in `instrument' 
actionpack (3.0.0) lib/action_view/template.rb:127:in `render' 
actionpack (3.0.0) lib/action_view/render/rendering.rb:59:in `_render_template' 
activesupport (3.0.0) lib/active_support/notifications.rb:52:in `instrument' 
activesupport (3.0.0) lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
activesupport (3.0.0) lib/active_support/notifications.rb:52:in `instrument' 
actionpack (3.0.0) lib/action_view/render/rendering.rb:56:in `_render_template' 
actionpack (3.0.0) lib/action_view/render/rendering.rb:26:in `render' 
actionpack (3.0.0) lib/abstract_controller/rendering.rb:114:in `_render_template' 
actionpack (3.0.0) lib/abstract_controller/rendering.rb:108:in `render_to_body' 
actionpack (3.0.0) lib/action_controller/metal/renderers.rb:47:in `render_to_body' 
actionpack (3.0.0) lib/action_controller/metal/compatibility.rb:55:in `render_to_body' 
actionpack (3.0.0) lib/abstract_controller/rendering.rb:101:in `render_to_string' 
actionpack (3.0.0) lib/abstract_controller/rendering.rb:92:in `render' 
actionpack (3.0.0) lib/action_controller/metal/rendering.rb:17:in `render' 
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:40:in `render' 
activesupport (3.0.0) lib/active_support/core_ext/benchmark.rb:5:in `ms' 
c:/Ruby187/lib/ruby/1.8/benchmark.rb:308:in `realtime' 
activesupport (3.0.0) lib/active_support/core_ext/benchmark.rb:5:in `ms' 
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:40:in `render' 
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:78:in `cleanup_view_runtime' 
activerecord (3.0.0) lib/active_record/railties/controller_runtime.rb:15:in `cleanup_view_runtime' 
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:39:in `render' 
actionpack (3.0.0) lib/action_controller/metal/implicit_render.rb:10:in `default_render' 
actionpack (3.0.0) lib/action_controller/metal/implicit_render.rb:5:in `send_action' 
actionpack (3.0.0) lib/abstract_controller/base.rb:150:in `process_action' 
actionpack (3.0.0) lib/action_controller/metal/rendering.rb:11:in `process_action' 
actionpack (3.0.0) lib/abstract_controller/callbacks.rb:18:in `process_action' 
activesupport (3.0.0) lib/active_support/callbacks.rb:435:in `_run__434435962__process_action__453433196__callbacks' 
activesupport (3.0.0) lib/active_support/callbacks.rb:409:in `send' 
activesupport (3.0.0) lib/active_support/callbacks.rb:409:in `_run_process_action_callbacks' 
activesupport (3.0.0) lib/active_support/callbacks.rb:93:in `send' 
activesupport (3.0.0) lib/active_support/callbacks.rb:93:in `run_callbacks' 
actionpack (3.0.0) lib/abstract_controller/callbacks.rb:17:in `process_action' 
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:30:in `process_action' 
activesupport (3.0.0) lib/active_support/notifications.rb:52:in `instrument' 
activesupport (3.0.0) lib/active_support/notifications/instrumenter.rb:21:in `instrument' 
activesupport (3.0.0) lib/active_support/notifications.rb:52:in `instrument' 
actionpack (3.0.0) lib/action_controller/metal/instrumentation.rb:29:in `process_action' 
actionpack (3.0.0) lib/action_controller/metal/rescue.rb:17:in `process_action' 
actionpack (3.0.0) lib/abstract_controller/base.rb:119:in `process' 
actionpack (3.0.0) lib/abstract_controller/rendering.rb:40:in `process' 
actionpack (3.0.0) lib/action_controller/metal.rb:133:in `dispatch' 
actionpack (3.0.0) lib/action_controller/metal/rack_delegation.rb:14:in `dispatch' 
actionpack (3.0.0) lib/action_controller/metal.rb:173 
actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:62:in `call' 
actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:62:in `dispatch' 
actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:27:in `call' 
rack-mount (0.6.13) lib/rack/mount/route_set.rb:148:in `call' 
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:93:in `recognize' 
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:82:in `optimized_each' 
rack-mount (0.6.13) lib/rack/mount/code_generation.rb:92:in `recognize' 
rack-mount (0.6.13) lib/rack/mount/route_set.rb:139:in `call' 
actionpack (3.0.0) lib/action_dispatch/routing/route_set.rb:492:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/best_standards_support.rb:17:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/head.rb:14:in `call' 
rack (1.2.1) lib/rack/methodoverride.rb:24:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/params_parser.rb:21:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/flash.rb:182:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/session/abstract_store.rb:149:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/cookies.rb:287:in `call' 
activerecord (3.0.0) lib/active_record/query_cache.rb:32:in `call' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/query_cache.rb:28:in `cache' 
activerecord (3.0.0) lib/active_record/query_cache.rb:12:in `cache' 
activerecord (3.0.0) lib/active_record/query_cache.rb:31:in `call' 
activerecord (3.0.0) lib/active_record/connection_adapters/abstract/connection_pool.rb:355:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:46:in `call' 
activesupport (3.0.0) lib/active_support/callbacks.rb:415:in `_run_call_callbacks' 
actionpack (3.0.0) lib/action_dispatch/middleware/callbacks.rb:44:in `call' 
rack (1.2.1) lib/rack/sendfile.rb:107:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/remote_ip.rb:48:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/show_exceptions.rb:46:in `call' 
railties (3.0.0) lib/rails/rack/logger.rb:13:in `call' 
rack (1.2.1) lib/rack/runtime.rb:17:in `call' 
activesupport (3.0.0) lib/active_support/cache/strategy/local_cache.rb:72:in `call' 
rack (1.2.1) lib/rack/lock.rb:11:in `call' 
rack (1.2.1) lib/rack/lock.rb:11:in `synchronize' 
rack (1.2.1) lib/rack/lock.rb:11:in `call' 
actionpack (3.0.0) lib/action_dispatch/middleware/static.rb:30:in `call' 
railties (3.0.0) lib/rails/application.rb:168:in `call' 
railties (3.0.0) lib/rails/application.rb:77:in `send' 
railties (3.0.0) lib/rails/application.rb:77:in `method_missing' 
railties (3.0.0) lib/rails/rack/log_tailer.rb:14:in `call' 
rack (1.2.1) lib/rack/content_length.rb:13:in `call' 
rack (1.2.1) lib/rack/handler/webrick.rb:52:in `service' 
c:/Ruby187/lib/ruby/1.8/webrick/httpserver.rb:104:in `service' 
c:/Ruby187/lib/ruby/1.8/webrick/httpserver.rb:65:in `run' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:173:in `start_thread' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:162:in `start' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:162:in `start_thread' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:95:in `start' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:92:in `each' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:92:in `start' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:23:in `start' 
c:/Ruby187/lib/ruby/1.8/webrick/server.rb:82:in `start' 
rack (1.2.1) lib/rack/handler/webrick.rb:13:in `run' 
rack (1.2.1) lib/rack/server.rb:213:in `start' 
railties (3.0.0) lib/rails/commands/server.rb:65:in `start' 
railties (3.0.0) lib/rails/commands.rb:30 
railties (3.0.0) lib/rails/commands.rb:27:in `tap' 
railties (3.0.0) lib/rails/commands.rb:27 
script/rails:6:in `require' 
script/rails:6 
Request 

Parameters: 

{"id"=>"1"} 
Show session dump 

Show env dump 

Response 

Headers: 

None 

J'ai essayé de trouver quelqu'un avec des problèmes similaires, mais en vain.

J'ai recopié l'ensemble du code pour ce chapitre du tutoriel pour s'assurer que ce n'était pas une faute de frappe, n'a toujours pas aidé.

Merci pour toute aide.

Répondre

5

J'avais le même problème ... j'ai mis du temps à comprendre. J'ai eu deux instances de la méthode show définie dans le UsersController. Une fois que j'ai supprimé celui qui ne contenait pas de déclaration @microposts, (la seconde n'avait pas @microposts) les tests se sont déroulés comme prévu et la page a correctement rendu les microposts.

À la votre! a

+0

C'était exactement le problème. Maintenant, je peux voir d'où ça vient. Dans les chapitres précédents, lorsque j'ai défini la méthode show, l'exemple du tutoriel avait mis la méthode vers la fin du code, alors qu'au chapitre 11, il la met au début. Donc, malgré mes nombreux copiés, je ne faisais que remplacer la méthode des doublons, pas l'original. Merci beaucoup! – Dave

+0

Merci pour votre réponse alphanumericone. J'avais le même problème. Cela me rendait complètement folle. Une telle petite erreur peut signifier un tel dras – icantbecool

+0

C'était mon problème aussi! Merci beaucoup! – JeffH