undefined methode `elk’ voor nil:NilClass… waarom?

voorbeeld rails guide, klik op de knop save post, console laat dit bericht zien:

Begin POST “/posts” voor 127001 op 25-12-2013 22:42:04 +0800
Verwerking door PostsController#create als HTML-parameters:
{“utf8″=>”✓”, “authenticity_token”=>”CLalUww3gqnSlED0AWdou6P/U2qya
vPqDiBANQOuYgA=”, “post”=>{“title”=>”11”, “text”=>”22”},
“commit”=>”Bericht opslaan”} (0,0 ms) begin transactie (0,0 ms)
terugdraaitransactie Omgeleid naar http:// 127001:3000/posts
Voltooid 302 Gevonden in 16 ms (ActiveRecord: 0,0 ms)

Gestart met GET “/posts” voor 127001 op 25-12-2013 22:42:04 +0800
Verwerking door PostsController#index als HTML weergegeven
posts/index.html.erb binnen lay-outs/applicatie (15,6 ms) Voltooid 500
Interne serverfout in 31 ms

ActionView::Template::Error (ongedefinieerde methode `elk’ voor
nul:NilClass):

       <th>Text</th>
        </tr>
        <% @posts.each do |post| %>

=============================================== =======

routes klopt, waarom is post nihil? rails 4.0.2 robijn 2.0


Antwoord 1, autoriteit 100%

In je berichtencontroller moet je @postsdefiniëren, wat op basis van de fout niet is.

# app/controllers/posts_controller.rb
class PostsController < ApplicationController
  def index
    @posts = Post.all
  end
end 

Aangezien @postsniet is gedefinieerd, zal het aanroepen van eacherop undefined methodeach’ genereren voor nil:NilClass`.


Antwoord 2, autoriteit 34%

Om meer over deze fout uit te leggen wanneer u deze tegenkomt

 undefined method `each' for nil:NilClass

De fout is duidelijk klachten dat u elke methode op iets hier (@posts) belt, wat nul is. Dat betekent dat u het niet in uw controller hebt gedefinieerd. Omdat je het niet hebt bepaald, is dat de reden waarom het de ongedefinieerde methode voor Nil-klasse klagen.

Controleer of u een exemplaarvariabele van uw weergave noemt? U moet in uw controller definiëren om toegankelijk te zijn in het meningen.

Soms krijg je deze foutmelding ook als je een privémethode in je controller belt.


Antwoord 3, Autoriteit 6%

Probeer dit te vervangen:

<% @posts.each do |post| %>

met

<% Post.all.each do |post| %>

Other episodes