Problem z relacjami - forum

[code=ruby] Forum
attr_accessible :name, :description, :forum_id
has_many :topics, :dependent => :destroy

Topic
attr_accessible :name, :last_poster_id, :last_post_at, :user_id, :forum_id
belongs_to :user
belongs_to :topic
has_many :posts, :dependent => :destroy

Post
attr_accessible :content, :user_id, :forum_id, :topic_id
belongs_to :user
belongs_to :topic

User
has_many :posts
has_many :topics[/code]
Powyżej moje relacje, a to link do kodu => https://github.com/regedarek/hkoliba/tree/master/app

<textarea name="post[content]" cols="80" rows="20"><%= @post.content %></textarea> NoMethodError: undefined method `content' for #<Topic:0xa84dba4>
Cały czas dostaję ten błąd, dlaczego?
Jak sprawdzać poprawność relacji i dojść gdzie jest błąd?

Wygląda na to, że @post jest instancją Topic.

mógłbyś troszkę bardziej mi wyjaśnić :)?

  1. Usuń pliki swp z gita, a najlepiej dodaj je go gitignora: http://www.kernel.org/pub/software/scm/git/docs/gitignore.html
  2. https://github.com/regedarek/hkoliba/blob/master/app/controllers/posts_controller.rb - tu Ci się merge nie udał, masz dwie akcje update i create.
  3. W jakiej akcji i kontrolerze masz ten błąd?

przy pisaniu nowego Topica Topic#create.
Poprawiony git.

Dostajesz ten błąd ponieważ Topic nie zawiera metody “content”. Innymi słowy mówiąc, w Topic nie ma takiego pola, które by sie nazywało content. Zmienna @post pojawia się znienacka w partialu _form Topica, musisz ją jakoś zdefiniować. Ponadto w kontrolerze Topic robisz @post.save ale też brak jakiegoś wcześniejszego odniesienia do tego co to jest (skąd wziąć) ten @post.

Zajrzyj sobie tu: http://railscasts.com/episodes/73-complex-forms-part-1 (i do kolejnych części). Generalnie powinno Ci to pomóc poprawić _form.

Piszę to forum dokładnie z tego tutoriala: http://net.tutsplus.com/tutorials/other/building-a-forum-from-scratch-with-ruby-on-rails/ wyszystko powinno być identycznie. Sprawdzę ten formularz jeszcze raz.

I pewnie jest identyczne ale tutorial wcale nie musi być poprawny :slight_smile:

Oczywiście, że tutorial pełen błędów.
Wystarczyło dodać @post = Post.new w topic_controller.rb