Zdjęcie kategorii w artykule

Witam,

Chciałbym, żeby w widoku ( show bądź index ) artykułu przypisanego do konkretnej kategorii, ukazywało się naszym oczom zdjęcię tej kategorii. Używam Paperclipa. Niestety za nic nie potrafię rozgryść tegoż problemu. Poniżej przedstawiam moje modele:

class Article < ActiveRecord::Base
belongs_to :categories_articles
belongs_to :categories
has_many :comments

belongs_to :user
cattr_reader :per_page
@@per_page =10

end

class Category < ActiveRecord::Base
has_many :categories_articles
has_many :articles, :through=>:categories_articles
has_attached_file :symbol
end

class CategoriesArticles < ActiveRecord::Base
belongs_to :article
belongs_to :category
end

Dzięki za pomoc,

Pozdrawiam…

Rozumiem, że zuploadowane pliki zapisują się poprawnie.

Jeśli tak to w widoku:

<%= image_tag @category.symbol.url %>

Swoją drogą, wygląda że masz coś namieszane z asocjacjami w kodzie. Może tak będzie lepiej:

class Article < ActiveRecord::Base
belongs_to :category

end

class Category < ActiveRecord::Base
has_many :articles

end

To oczywiście przy założeniu, że artykuł należy tylko do jednej kategorii (wtedy też nie potrzeba tabeli categories_articles i jej modelu). Jeśli ma być relacja wiele do wielu, skorzystaj z has_and_belongs_to_many.

IMO raczej <%= image_tag @article.category.symbol.url %> , skoro to ma być widok artykułu.

Dzięki bardzo za podpowiedzi, faktycznie w modelach nieźle namieszałem, ale istota sprawy dalej pozostaje istotą.

Zmeniłem w widoku tag, na taki jaki mówiliście:

<%= image_tag @category.symbol.url %>

A wtedy wyskakuje:

NoMethodError in Articles#show

Showing app/views/articles/show.html.erb where line #17 raised:
undefined method `category’ for #Article:0xb75ba470
14:

<%= l @article.created_at, :format => :long %>

15:
16:

17:
<%= image_tag @article.category.symbol.url %>

18:


19: <%=textilize @article.text %>
20:

RAILS_ROOT: /home/niemamnazwy/NetBeansProjects/altered_beast
Application Trace | Framework Trace | Full Trace
/home/niemamnazwy/.gem/ruby/1.8/gems/activerecord-2.3.3/lib/active_record/attribute_methods.rb:260:in method_missing' /home/niemamnazwy/NetBeansProjects/altered_beast/app/views/articles/show.html.erb:17:in_run_erb_app47views47articles47show46html46erb’
/home/niemamnazwy/NetBeansProjects/altered_beast/app/controllers/articles_controller.rb:25:in `show’

hmm…i co teraz można zrobić ?

Najpierw zróbmy porządek z modelami (zakładam, że chcesz aby artykuł należał do wielu kategorii):

[code=Ruby]class Article < ActiveRecord::Base
has_many :categorizations
has_many :categories, :through => :categorizations

end

class Category < ActiveRecord::Base
has_many :categorizations
has_many :articles, :through => :categorizations
has_attached_file :symbol
end

class Categorization < ActiveRecord::Base
belongs_to :article
belongs_to :category
end[/code]
Zakładając, że do artykułu masz przypisane kategorie, najprostsze rowiązanie to:

<%= image_tag @article.categories.first.symbol.url %>

Wszystko elegancko śmiga. W końcu zrozumiałem jak to działa.

Mission completed.

Dzięki…