这个问题与“Ruby array to string conversion”非常相似,但在我的情况下,使用表格['12','34','35','231']
,我希望得到一个字符串:
'12' &
'32' &
'35' &
'231'
我的想法是在名为content
的装饰器方法中构造一个字符串,当我在视图<p><%= table.content %></p>
中显示该特定字符串时,我希望它在显示时自动呈现,而不添加任何HTML视图中的标记,基本上模仿了每两行之间的<br>
标记。
我已经拥有的是:
def content
string = "Table content "
table = ['12','34','35','231']
string = table.map do |row|
row
end
"#{string.join(" & \n")}"
end
任何线索?
答案 0 :(得分:0)
def content
table = ['12','34','35','231']
results = table.map { |r| "'#{r}'" }.join(" & <br/>")
"<pre>#{results}</pre>".html_safe
end
map
通过将数组的每个成员应用于块来创建新数组。这会将您的数字用单引号括起来。
你的几行代码是多余的 - string = "Table content "
什么也没做,而且:
string = table.map do |row|
row
end
不必要地旋转数组并返回一个相同的数组。
答案 1 :(得分:0)
理解how browsers render text非常重要。
ary = ['12','34','35','231']
File.write('test.html', '<html><body><pre>' + ary.map{ |s| "'#{ s }'"}.join(" &\n") + '</pre></body></html>')
这将创建一个类似于:
的HTML文件<html><body><pre>'12' &
'34' &
'35' &
'231'</pre></body></html>
打开&#34; test.html&#34;在浏览器中,您将看到输出垂直显示,如下所示:
'12' & '34' & '35' & '231'
浏览器吞噬空格,这意味着,除非您将输出包装在<pre>
tags中,否则浏览器将忽略换行符,并将文本拉为单行/句子。他们这样做是因为他们“有帮助”#34;
在您的代码中,ary.map{ |s| "'#{ s }'"}.join(" &\n")
是控制器中生成字符串的内容。然后,在您的视图中包裹输出带<pre>
字符串的行,您应该很好。