如何循环用户在所有列表中发布的类别

时间:2017-08-20 16:10:56

标签: ruby-on-rails ruby

我正在尝试显示我网站上的用户发布的所有类别。这就是我的模型的设置方式:用户可以创建许多商家信息。这是一对多的关系。列表可以具有多个类别,并且类别具有多个列表(存在具有相同类别的多个列表)。如何显示用户列出的所有类别?我试过了

<% @user.listings.each.unique.categories do |category| %>
<li><%= category %></li>
<% end %>

以及

<% @user.listings.categories do |category| %>
<li><%= category %></li>
<% end %>

有关如何解决此问题的任何建议?

2 个答案:

答案 0 :(得分:1)

如果您通过内部用户模型

拥有has_many,则可以直接这样做
class User < ApplicationRecord
  has_many :listings
  has_many :categories, through: :listings
end

然后你可以做

<% @user.categories do |category| %>
  <li><%= category %></li>
<% end %>

答案 1 :(得分:0)

您可以形成类别列表

<% categories = @user.listings.flat_map { |l| l.categories }.uniq %>

<% categories.each do |category| %>
  <li><%= category %></li>
<% end %>

或使用User

配置Categorythrough之间的关系