正如您所看到的,我有一个帮助器,其中包含一个我正在尝试渲染到视图的方法。
嵌套的content_tags不会呈现我对此标记的断开连接吗?
def draw_calendar(selected_month, month, current_date)
content_tag(:table) do
content_tag(:thead) do
content_tag(:tr) do
I18n.t(:"date.abbr_day_names").map{ |day| content_tag(:th, day, :escape => false) }
end #content_tag :tr
end #content_tag :thead
content_tag(:tbody) do
month.collect do |week|
content_tag(:tr, :class => "week") do
week.collect do |date|
content_tag(:td, :class => "day") do
content_tag(:div, date.day, :class => (Date.today == current_date ? "today" : nil))
end #content_tag :td
end #week.collect
end #content_tag :tr
end #month.collect
end #content_tag :tbody
end #content_tag :table
end #draw_calendar
:::编辑:::
所以这就是有效的。再次感谢mu太短了!
def draw_calendar(selected_month, month, current_date)
tags = []
content_tag(:table) do
tags << content_tag(:thead, content_tag(:tr, I18n.t("date.abbr_day_names").collect { |name| content_tag :th, name}.join.html_safe))
tags << content_tag(:tbody) do
month.collect do |week|
content_tag(:tr, :class => "week") do
week.collect do |date|
content_tag(:td, :class => "day") do
content_tag(:div, :class => (Date.today == current_date ? "today" : nil)) do
date.day.to_s
end #content_tag :div
end #content_tag :td
end.join.html_safe #week.collect
end #content_tag :tr
end.join.html_safe #month.collect
end #content_tag :tbody
tags.join.html_safe
end #content_tag :table
end #draw_calendar
端
答案 0 :(得分:9)
您的问题是content_tag
希望其块返回一个字符串,您可以在代码中查看它是否使用CaptureHelper
中的capture
并忽略任何非字符串返回来自街区。
您需要将collect
s变成字符串,如下所示:
content_tag(:tbody) do
month.collect do |week|
content_tag(:tr, :class => "week") do
week.collect do |date|
..
end.join.html_safe
end
end.join.html_safe
end
例如,像这样的帮手:
content_tag(:table) do
content_tag(:thead) do
content_tag(:tr) do
[1,2,3,4].map do |i|
content_tag(:td) do
"pancakes #{i}"
end
end
end
end
end
产生
<table>
<thead>
<tr></tr>
</thead>
</table>
但添加了.join.html_safe
:
content_tag(:table) do
content_tag(:thead) do
content_tag(:tr) do
[1,2,3,4].map do |i|
content_tag(:td) do
"pancakes #{i}"
end
end.join.html_safe
end
end
end
产生预期的:
<table>
<thead>
<tr>
<td>pancakes 1</td>
<td>pancakes 2</td>
<td>pancakes 3</td>
<td>pancakes 4</td>
</tr>
</thead>
</table>