Helper 方法不渲染任何列表项

问题描述 投票:0回答:1

在 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>

我在这里缺少什么?

ruby-on-rails
1个回答
0
投票

通常,使用 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
© www.soinside.com 2019 - 2024. All rights reserved.