作者热门文章
- xml - AJAX/Jquery XML 解析
- 具有多重继承的 XML 模式
- .net - 枚举序列化 Json 与 XML
- XML 简单类型、简单内容、复杂类型、复杂内容
正如您所看到的,我有一个助手,我正在尝试将其呈现给 View 。
嵌套的 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
结束
最佳答案
你的问题是content_tag
希望它的 block 返回一个字符串,您可以跟踪代码以查看它使用 capture
来自 CaptureHelper
并忽略从该 block 返回的任何非字符串。
你需要把你的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>
关于ruby-on-rails - 返回率 |如何让 content_tags 嵌套?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10844277/
我是一名优秀的程序员,十分优秀!