gpt4 book ai didi

ruby-on-rails - 返回率 |如何让 content_tags 嵌套?

转载 作者:数据小太阳 更新时间:2023-10-29 07:25:05 25 4
gpt4 key购买 nike

正如您所看到的,我有一个助手,我正在尝试将其呈现给 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 返回的任何非字符串。

你需要把你的collects 变成像这样的字符串:

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com