0

私は Rails が初めてで、最初のアプリに取り組んでいます。私が達成したいのは、独自の壁とコメントを持つ Facebook のようなグループです。とても簡単に聞こえます:)

現在、グループ、投稿、コメントの 3 つのモデルがあります。コードは次のとおりです。

class Group < ActiveRecord::Base
  attr_accessible :affiliation, :group_name, :group_type, :string

  validates :group_name, :presence => true
  has_many :posts, :dependent => :destroy, :foreign_key => "id"
end

class Post < ActiveRecord::Base
  attr_accessible :body, :posted_by, :posted_by_uid

  validates :body, :presence => true
  belongs_to :group
  has_many :comments, :dependent => :destroy
end

class Comment < ActiveRecord::Base
  attr_accessible :body, :commenter

  belongs_to :post
end

コメントを投稿に適切に関連付けることができました。その見解はOKです。しかし、何らかの理由で投稿をグループに関連付けようとすると、投稿 (対応するコメント付き) が表示されません。

表示ビューのスニペットは次のとおりです。

<b>Posts</b>
<%= render @group.posts %>

部分的な投稿 (Posts forlder の _post.html.erb)

<h1>New post</h1>
<%= render 'form' %>

<p>
  <b> Content </b>
  <%= @post.body %>
</p>

<h2>Comments</h2>
<%= render @post.comments %>  

<h2>Add a comment:</h2>
<%=  render "comments/form" %>
<br />

PS外部キーを追加した理由がわかりませんが、それがないとエラーが発生します(列group.posts.idが存在しません)。スタックオーバーフローに関する他の質問と比較して、外部キーが問題を選択する可能性があることを何とか理解しました. ありましたが、投稿が表示されません。

4

1 に答える 1

1

posts テーブルに列があることを確認してくださいgroup_id。そうすれば、外部キー部分を削除できるはずです。

投稿がない場合@group、パーシャルはレンダリングされません。呼び出す@group.postsと配列が返され、それが繰り返され、オブジェクトごとに render が呼び出されます。投稿がない場合、空の配列が返され、パーシャルはレンダリングされません。

次のように変更します。

グループ#ビューを表示:

<h1>New post</h1>
<%= render 'posts/form' %>

<b>Posts</b>
<%= render @group.posts %>

_post.html.erb 部分:

<p>
  <b> Content </b>
  <%= @post.body %>
</p>

<h2>Comments</h2>
<%= render @post.comments %>  

<h2>Add a comment:</h2>
<%= render "comments/form" %>
<br />
于 2013-04-29T07:07:30.317 に答える