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