我有一个文本字段,用户可以输入要转换为列表项的数据。因此,他们可以在文本区域中输入:
Apple
Tomato
Wrench
所以我有以下可行的方法:
<% regional_services = @region.services.split("\n") %>
<ul>
<%regional_services.each do |services| %>
<li><%=services%></li>
<%end%>
</ul>
它可以像这样正确输出
但是我试图让它在助手中工作,因为它在视图中很丑陋。
所以我有以下内容:
def other_service
if @region.services.present?
something = @region.services.split("\r\n")
content_tag(:ul) do
content_tag(:li, something.each {|alpha| alpha })
end
else
content_tag(:p, 'Here is text')
end
end
最终输出如下:
所以看起来它没有在列表项上应用迭代,所以我尝试了以下操作:
def other_service
if @region.services.present?
regional_service = @region.services.split("\n")
content_tag(:ul) do
regional_service.each do |service|
content_tag(:li, service)
end
end
else
content_tag(:p, 'Here is text')
end
end
没有错误,但实际上没有在有项目的页面上显示任何内容。那么,如何通过迭代执行content_tag ul?
答案 0 :(得分:0)
each
返回数组,因此content_tag :ul
的块将接收数组本身作为内部HTML。显然这不是您想要的。
为了将HTML添加到输出缓冲区,您可以使用concat
:
content_tag :ul do
regional_service.each do |service|
concat content_tag(:li, service)
end
end