我有一个数组@cities = ["Vienna", "Barcelona", "Paris"];
我试图在两者之间展示间隔物。但是,阵列中可能只有1个元素,在这种情况下我不想显示间隔符。而且数组也可能是空的,在这种情况下我想什么都不显示。
对于上面的数组,我想要以下输出:
Vienna
-----
Barcelona
-----
Paris
在实际打印城市名称之前,我使用erb模板cityview
来应用格式,css等。简化,它看起来像这样:
<p><%= @cities[@city_id] %></p>
我已经实现了如下......
unless @array.empty?
@city_id = 0;
erb :cityview
end
unless @array[1..-1].nil?
@array[1..-1].each_index do |i|
@city_id = i+1;
puts "<p>-------</p>";
erb :cityview
end
end
有更好的方法吗?
答案 0 :(得分:6)
@cities.join("<p>--------</p>")
编辑以解决模板
这里我假设有一个erbs
方法返回渲染模板而不进行放置。返回字符串可以更容易地操作和重用。
@cities.map { |c| @city = c; erb :cityview }.join("<p>--------</p>")
答案 1 :(得分:0)
我更喜欢:
erb:
<p><%= @city %></p>
和循环
@array.each_with_index do |e, i|
@city = e
erb :cityview
puts "<p>-------</p>" if i < @array.length - 1
end
我认为你已经拆分了erb,因为你想自定义它。
答案 2 :(得分:0)
如果您想将HTML与您的城市名称混合使用,那么在混合HTML之前,您需要担心HTML编码问题。仅使用标准库:
require 'cgi'
html = @cities.map { |c| CGI.escapeHTML(c) }.join('<p>-----</p>')
如果您使用的是Rails,则可以使用ERB::Util
中的html_escape
并使用html_safe
将结果标记为HTML格式,以避免担心编码你的观点:
include ERB::Util
html = @cities.map { |c| html_escape(c) }.join('<p>-----</p>').html_safe
答案 3 :(得分:0)