2017-05-14 1 views
0
<ul id = "subjects"> 
    <% Subject.find(:all).each do |c| %> 
    <li><%= link_to c.name, :action => "show_subjects", :id => c.id %></li> 
    <% end %> 
</ul> 

Ich habe ein Code-Snippet in meiner Datei list.html.erb. Es wird eine Ausnahme ausgelöst. 'Konnte Subjekt nicht mit' id '= all' finden. Was ist das Problem in diesem Fall? Ich möchte alle Themen als Hyperlinks auflisten.Konnte id = nicht finden: alle - Ruby on Rails

Danke für Hilfe.

+1

'find (: all)' war nicht die richtige Methode, um Rails in * Jahren * zu verwenden. Wo auch immer Sie Rails von lernen, sollten Sie diese Ressource verlassen. – meagar

Antwort

1

Das Problem ist, dass Sie Code verwenden, der uralt ist. Ersetzen Sie es mit einem dieser beiden.

Subject.all.each do ... 

oder

Subject.find_each do ... 

Erklärung für Fehler ist, dass find sucht automatisch von id und :all ist keine gültige id und so kann es nichts und wirft und Ausnahme finden.

+1

Vielleicht lohnt es sich darauf hinzuweisen, dass 'find (: all)' in Rails vor Jahren gültig war. Außerdem verwendet er alte Idiome, um Argumente an die 'link_to'-Methode zu übergeben. Es scheint mir, als würde er einem veralteten Tutorial folgen. – spickermann

+0

Oh, vielen Dank! Es klappt! @spickermann Wahrscheinlich hast du recht, dass das Tutorial veraltet ist. Hast du ein aktuelles Tutorial zu empfehlen? – pjdev

+0

Google 'rails hartl tutorial', das ist das kanonische Tutorial etwas, damit kann man zumindest nichts falsch machen. – Iceman