显示所有帖子的特定类别,只返回一个结果到目前为止 - Rails 5

我正在使用 rails(5.1.4) 并尝试显示标记了特定类别的所有帖子。我目前只能够返回一个帖子,而不是此类别的每个帖子。显示所有帖子的特定类别,只返回一个结果到目前为止 - Rails 5

Post.rb

has_many :post_categories 

has_many :categories, through: :post_categories

extend FriendlyId

friendly_id :title, use: :slugged

def category_list

categories.map(&:name)

end

Category.rb:

class Category < ApplicationRecord 

has_many :post_categories

has_many :posts, through: :post_categories

extend FriendlyId

friendly_id :name, use: :slugged

end

类别控制器:

def show 

@category = Category.find_by_name(params[:category])

@posts = @category.posts

end

类别#显示ERB:(这里我试图列出每一个岗位有这个类别,但只能得到一个结果,当我可以看到许多同一类别的帖子)

<% @posts.each do |post| %> 

<h1 class="title"><%= link_to post.title, post_path(post) %></h1>

<% end %>

从终端:

Started GET "/category/Philadelphia%20maki" for 127.0.0.1 at 2017-12-17 21:03:39 -0800 

Processing by CategoriesController#show as HTML

Parameters: {"category"=>"Philadelphia maki"}

Category Load (5.6ms) SELECT "categories".* FROM "categories" WHERE "categories"."name" = $1 LIMIT $2 [["name", "Philadelphia maki"], ["LIMIT", 1]]

Rendering categories/show.html.erb within layouts/dashboards

Post Load (2.0ms) SELECT "posts".* FROM "posts" INNER JOIN "post_categories" ON "posts"."id" = "post_categories"."post_id" WHERE "post_categories"."category_id" = $1 [["category_id", 15]]

路线:

category GET|POST /category/:category(.:format) categories#show 

帖子#显示ERB:

<ul class="category-list"> 

<% @post.category_list.map.each do |category| %></p>

<li itemprop="genre" class="category-list-item"> <%= link_to "#{category}", category_path(category) %></li>

<% end %>

</ul>

回答:

对于用户访问这个网页,

问题

用户所看到多个帖子有不同的页面上相同的类别名称,但获取该类别的职位时,有人只返回1篇文章。

原因

有多个Category记录具有相同名称的数据库。

解决方案

添加验证模型Category

validates :name, uniqueness: true, allow_blank: true 

以上是 显示所有帖子的特定类别,只返回一个结果到目前为止 - Rails 5 的全部内容, 来源链接: utcz.com/qa/260952.html

回到顶部