Rails使用.map(&:user)并在循环时添加HTML标记

时间:2016-01-25 05:10:26

标签: ruby-on-rails ruby ruby-on-rails-4 enumeration

如果我有这样的话,你可以添加HTML标签:

= skit.challenges.map(&:user).flatten.uniq.compact

我想在循环记录时添加一些ulli。这是可能的还是我必须完全改变它?

3 个答案:

答案 0 :(得分:2)

绝对可能,尽管你应该避免在视图中放置那种逻辑。在Rails的循环中,只需使用逻辑打开/关闭Web标记,然后在最后执行相同的操作。

<ul>
<% @skit_users.each do |user| %>
  <li><%= user.name %></li>
<% end %>
</ul>

答案 1 :(得分:1)

使用content_tag帮助

arr = ["sdf<div>sdf</div>", "<script>alert(123)</script>", "sdf"]

content_tag(:ul, arr.map{|e| content_tag(:li, e) }.inject(:+))

>> "<ul><li>sdf&lt;div&gt;sdf&lt;/div&gt;</li><li>&lt;script&gt;alert(123)&lt;/script&gt;</li><li>sdf</li></ul>"

答案 2 :(得分:0)

["a", "b", "c"]
>> a = arr.map {|u| "<ul>#{u}</ul>"}
["<ul>a</ul>", "<ul>b</ul>", "<ul>c</ul>"]

a = arr.map {|u| "<ul>#{u}</ul>"}.flatten.uniq.compact
["<ul>a</ul>", "<ul>b</ul>", "<ul>c</ul>"]

您可以尝试这样的事情,因为据我所知,您想要为您的视图文件动态创建一些html元素。