我是Rails的新手,正在开发我的第一款应用。我想要实现的是一个像自己的墙和评论团体的Facebook。听起来很简单:)
我目前有3个型号:Group,Post和Comment。这是代码:
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
我设法将评论与帖子正确联系起来。它的观点还可以。但是当我试图将帖子与群组联系起来由于某种原因帖子(带有相应的评论)没有出现。
以下是Show view:
的片段<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不存在),我只是想知道它与stackoverflow上的其他问题相比,外键可能选择问题。确实如此,但它没有显示帖子。
答案 0 :(得分:1)
确保posts表格中有一列group_id
,然后您就可以删除外键部分。
如果@group
没有任何帖子,那么它将不会呈现部分。调用@group.posts
将返回一个数组,然后迭代并为每个对象调用render。如果没有帖子,则返回一个空数组,并且不会呈现部分。
将其更改为以下内容:
群组#show view:
<h1>New post</h1>
<%= render 'posts/form' %>
<b>Posts</b>
<%= render @group.posts %>
_post.html.erb partial:
<p>
<b> Content </b>
<%= @post.body %>
</p>
<h2>Comments</h2>
<%= render @post.comments %>
<h2>Add a comment:</h2>
<%= render "comments/form" %>
<br />