在 Rails 7 中,为什么以下助手不渲染列表项?
def list(options)
tag.ul(class: "a") do
options.each do |option|
tag.li(class: "b") do
tag.span(option, class: "c")
end
end
end
end
我调用
<%= list(["X", "Y", "Z"]) %>
,渲染出来的只是 <ul class="a"></ul>
。
我在这里缺少什么?
通常,使用 erb 你会这样写:
<%= tag.ul(class: "a") do %>
<% ["X", "Y", "Z"].each do |option| %>
<%= tag.li(class: "b") do %> # <%= %> is the same as `concat`
<% tag.span(option, class: "c") %>
<% end %>
<% end %>
<% end %>
concat
:
def list(options)
tag.ul(class: "a") do
options.each do |option|
concat(
tag.li(class: "b") do
tag.span(option, class: "c")
end
)
end
end
end
safe_join
:
def list(options)
tag.ul(class: "a") do
safe_join(
options.map do |option|
tag.li(class: "b") do
tag.span(option, class: "c")
end
end
)
end
end