我有Post
和category
型号
Post
belongs_to :category
Category
has_many :posts
在类别显示页面上,我可以显示属于此类别的所有帖子的列表
<% Post.where(category_id: @category.id).each do |post| %>
....
<% end %>
categories_controller ....
def show
@category = Category.friendly.find(params[:id])
@categories = Category.all
end
如何在帖子的一个显示页面上显示属于同一类别(或共享相同类别ID)的相关帖子列表。谢谢!
答案 0 :(得分:1)
我认为你可以在 Dim counter, pluscount, minuscount, zerocount As Decimal
For counter = 1 To 10
Console.WriteLine("Enter 10 numbers")
counter = Console.ReadLine
If counter > 0 Then
pluscount = pluscount + 1
ElseIf counter < 0 Then
minuscount = minuscount + 1
Else
zerocount = zerocount + 1
End If
counter = counter + 1
Next
Console.WriteLine(pluscount & " number/s is/are positive.")
Console.WriteLine(minuscount & " number/s is/are negative.")
Console.WriteLine(zerocount & " number/s is/are zero")
中执行类似的操作:
posts_controller
顺便说一句,一个好的做法是使用范围而不是def show
@post = Post.find(params[:id])
@relative_posts = Post.where(category_id: @post.category_id)
end
:
where
这样你可以在控制器中做到
Post
belongs_to :category
scope :of_category, ->(category) { where(category_id: category) }
答案 1 :(得分:1)
无需使用where条件,因为Post和Category之间已经有关联。所以你可以修改以下代码
Post.where(category_id: @category.id)
as
@category.posts
因此posts_controller.rb
中的展示操作应该如下所示
def show
@post = Post.find(params[:id])
@relative_posts = @post.category.posts
end
现在您的观点应与
类似<% @related_posts.each do |post| %>
// disply details of individual post
<% end %>
或者您可以通过将每个循环修改为@related_posts
<% @post.category.posts.each do |post| %>
变量
希望这会对你有所帮助。
答案 2 :(得分:0)
我很糟糕,我一直在节目视图中调用'@ post'而不是'post'
控制器应该是:
@related_posts = Post.where(category_id: @post.category_id)
和
展后视图:
<% @related_posts.each do |post| %>
<%= post.name %>
<% end %>
感谢所有人的贡献