Kanał Atom

Cześć,
mam taki problem. Robie kanał atom dla newsów na stronie. Znalazłem dokumentacje do tego i zrobiłem analogicznie ale cały czas wyskakuje błąd.

Błąd:

undefined method `news_url' for #<#<Class:0x00000004f98e50>:0x000000050b0c70>

Akcja z controllera:

[code]def feed
@news = @site.pages.where(:type_cd => Page.types(:news)).first.news(“created_at DESC”)

@updated = @news.first.created_at unless @news.empty?

respond_to do |format|
format.atom { render :layout => false }
format.rss { redirect_to feed_path(:format => :atom), :status => :moved_permanently }
end
end[/code]
feed.atom.builder:

[code]atom_feed do |feed|
feed.title(“News”)
feed.updated(@news[0].created_at) if @news.length > 0

@news.each do |news|
feed.entry(news) do |entry|
entry.title(news.title)

end
end
end[/code]
Jakby ktoś wiedział co z tym zrobić to będę wdzięczny.

W tym błędzie na pewno jest jakaś sugestia co do miejsca wystąpienia tego błędu - plik i numer linii. Zobacz, czy coś Ci się tam nie rzuci w oczy. Poza tym, czy masz zdefiniowany routing dla newsów? Coś w stylu resources :news, na przykład?

Routing mam dobrze skonfigurowany. Błąd wyskakuje przy wywołaniu tej lini:

feed.entry(news) do |entry|

A ta zmienna news_url jest zależna od nazwy klasy. W moim przypadku klasa news to news_url.

dodaj odpowiedni wpis w config/routes.rb

resources :news

Skąd ta pewność?

[quote=KrzyH]Routing mam dobrze skonfigurowany. Błąd wyskakuje przy wywołaniu tej lini:

feed.entry(news) do |entry|

A ta zmienna news_url jest zależna od nazwy klasy. W moim przypadku klasa news to news_url.[/quote]
Tak dokładnie, to to nie jest zmienna, tylko funkcja. Rzeczywiście jest ona tworzona (znaczy: jej nazwa jest “odgadywana”) na podstawie klasy, zaś sama funkcja jest tworzona na podstawie wpisów routingu, stąd moja sugestia, że w config/routes.rb czegoś ci brakuje - najpewniej tego, co zasugerował morii. Sprawdź czy po uruchomieniu rake routes zobaczysz na liście coś w stylu news GET /news(.:format) news#index i tym podobne.