Ruby on rails 如何在ruby中多次显示某个项目的列表中显示该项目一次

Ruby on rails 如何在ruby中多次显示某个项目的列表中显示该项目一次,ruby-on-rails,ruby,html,Ruby On Rails,Ruby,Html,我已经在我的.html.erb文件中编写了代码,但是我认为在我的控制器中编写代码可能更有意义?此代码返回所有名称。我试图弄清楚如何只提取一次标记名,如果用户输入一个已经使用过的标记名,它就不会再次显示 <ul> <% @pictures.each do |pic| %> <% pic.tags.each do |tag| %> <li> <%= tag.name %> </li&

我已经在我的.html.erb文件中编写了代码,但是我认为在我的控制器中编写代码可能更有意义?此代码返回所有名称。我试图弄清楚如何只提取一次标记名,如果用户输入一个已经使用过的标记名,它就不会再次显示

<ul>
  <% @pictures.each do |pic| %>
    <% pic.tags.each do |tag| %>
      <li>
        <%= tag.name %>
      </li>
    <% end %>
  <% end %>
</ul>
使用和:

对用户输入的所有收集的项目使用
数组#-
方法。

    <ul>
      <% @pictures.collect{|x| x.tags.uniq}.flatten.uniq.each do |tag| %>
          <li>
            <%= tag.name %>
          </li>
      <% end %>
    </ul>
    

这与存储标记值的方式有关,在save方法中,应将标记数组设置为uniq

该项目仍然存在prints@user2914144,更新了答案。如何获取@pictures值?从db?现在我收到所有输入的项目。你能发布代码吗?事实上,我很抱歉,@pictures是我的一个控制器中的一个实例变量。这是相当多的代码。试试这个pic.tags.uniq_by(&:name),每个都会//然后在这里只显示唯一的名称
<ul>
  <% @pictures.collect{|x| x.tags.uniq}.flatten.uniq.each do |tag| %>
      <li>
        <%= tag.name %>
      </li>
  <% end %>
</ul>
<ul>
      <% @pictures.each do |pic| %>
    <% pic.tags.uniq_by(&:name).each do |tag| %>
      <li>
        <%= tag.name %>
      </li>
    <% end %>
  <% end %>