Problem z dostaniem się do rekordu w tabeli

Witam, w pliku show_subjects.rhtml chciałem wyświetlić nazwę tematu i listę książek do niego należących jednak wywala mi błąd przy klikaniu linka do tego view file’a. Czy w ruby 3 to powinno być jakoś inaczej zapisane ?

undefined method `name’ for nil:NilClass
Extracted source (around line #1):

1:

<%= @subject.name -%>


2:

    3: <% @subject.books.each do |c| %>
    4:
  • <%= link_to c.title, :action => “show”, :id => c.id -%>
  • a oto część kodu którą tworzę listę tematów w bazie danych z linkami na stronie głównej:

      <% Subject.find(:all).each do |c| %>
    • <%= link_to c.name, :action => "show_subjects", :id => c.id %>

Czytaj błędy próbujesz wyciągnąć name z niczego z nil. Peoblem jest w @subject w kontrolerze masz co to robi i co wyciaga. Gdzieś masz błąd.

Kasa book jest zagnieżdżona w subject, Narazie mam kontroler tylko do book i tutorial nie wymagał tworzenia żadnych nowych kontrolerów na tym etapie …

Poza tym skoro ten fragment kodu w view file wyświetla listę tematów na stronie głównej (tabela subject -> rekord name) i jest zlinkowana do viewa show_subject.rb

    <% Subject.find(:all).each do |c| %>
  • <%= link_to c.name, :action => "show_subjects", :id => c.id %>
  • <% end %>

to dlaczego nie mogę w ten sam sposób zagnieżdzonym kodem pobrać dalej w show_subjects imienia tematu z tabeli ?? Przecież w linkach jest podane aby podczas wciśnięcia linku do akcji show_subjects podawał parametr :id danego subjectu w zależności którą nazwe na liście (który link)klikniemy ?? Nie rozumiem dlaczego przekazujemy obiekt nil :S,

<%= @subject.name -%>

    <% @subject.books.each do |c| %>
  • <%= link_to c.title, :action => "show", :id => c.id -%>
  • <% end %>

Subject.find(:all) a @subject
to nie jest to samo by @subject było widoczne musi być w konkretnym kontrolerze zdefiniowane inaczej nie bedzie tego widać. To zmienna by była dostępna musi być zdefiniowana w konkretnym kontrolerze.