Linki kategorii

Witam,

Mam dwa modele :category i article gdzie relacja jest category has many articles i article belongs to category.
Zrobiłem listę kategorii i po naciśnięciu na nazwę pokazują mi się art. przypisane do danej kategorii. Nie wiem jak zrobić żeby po kliknięciu na tytuł artykułu który mi się wyświetlił pokazywał mi się cały art.

w widoku category show mam :
<% @category.articles.each do |a| %>

  • <%= link_to a.title %>
  • <-próbując wstawić tutaj np. link_to a.title, article dostaję "undefined local variable or method `article' <% end %>

pozdro,

Do “Starszych i mądrzejszych” mam pytanie: Czy odwołanie do bazy danych bezpośrednio w widoku, jak ma to miejsce tutaj, nie jest czasem w jakiś sposób “niehigieniczne”? Czy nie lepiej w takiej sytuacji w kontrolerze zrobić @articles = @category.articles
?

A Twój link, jak się zdaje, powinien raczej wyglądać tak:

 link_to(a.title, a)

Swoją drogą, znacznik początku nieuporządkowanej listy powinien stać przed wejściem do pętli.

Tak powinno być (jeżeli w routes jest “resources :articles” bez zagnieżdżenia):

<li><%= link_to a.title, article_path(a) %></li>

@Lypa: zależy co to za widok. Podejrzewam, że category/show, więc kod imho jest ok (oczywiście

    trzeba przenieść tak jak pisałeś)

[quote=Arnvald]Tak powinno być (jeżeli w routes jest “resources :articles” bez zagnieżdżenia):

<li><%= link_to a.title, article_path(a) %></li>

[/quote]
Racja, zapomniałem o routes. Swoją drogą nie wiem, czy nie warto by było polecić Koledze Autorowi wątku zapoznanie się właśnie z resource routes i ich zagnieżdżaniu - być może mogłoby się tutaj sprawdzić.

W takim razie w jakich widokach należy na to zwracać uwagę?

faktycznie

    mi się obsunął:)
    W routes mam resources :articles ,ale chyba trzeba zagnieździć z kategoriami
    Dziwną sprawą dla mnie jest ,że wywołując
  • <%= link_to a.title, article_path(a) %>
  • w show dla articles to działa ,ale jak już to samo chcę zrobic w show categories , to dostaje undefined local variable or method `article’

@sagit: na pewno w tej linii pokazuje się błąd? może w innej linijce używasz zmiennej article, a ona nie jest zdefiniowna, w bloku each masz tylko zmienną a

@Lypa: taki najprostszy przykład - jak masz widok articles/index to raczej oczekujesz tam zmiennej @articles - zgodnie z konwencją.
Oczywiście dochodzą np. współdzielone partiale, gdzie powiedzmy w każdym widoku chcesz mieć kilka ostatnich artykułów, więc tam w ApplicationController możesz ustawiać zawsze zmienną @last_articles czy coś takiego.

@Arnvald tak błąd wskazuje na ta linie.
Wydaje mi się ,że muszę “udostępnić” zmienną article dla pozostałych kontrolerów i chyba robi się to poprzez ApplicationController a może idę w złym kierunku??