You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 7中自定义Helper方法无法渲染列表项的问题排查

Rails 7自定义Helper无法渲染列表项的原因及解决方法

问题出在Rails标签辅助方法的块返回值处理上:

  • 你的代码中options.each最终返回的是原数组(Ruby的each方法默认返回调用它的集合本身),而非遍历过程中生成的<li>标签内容,因此<ul>标签内部没有被填充任何内容。

修复方案1:使用map+join生成拼接后的标签字符串

def list(options)
  tag.ul(class: "a") do
    options.map do |option|
      tag.li(class: "b") do
        tag.span(option, class: "c")
      end
    end.join.html_safe
  end
end
  • map会将每个option转换为对应的<li>标签并组成数组,join把数组拼接成完整的HTML字符串,html_safe告诉Rails不要转义这段HTML内容。

修复方案2:使用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
  • concat是Rails标签块中的专用方法,能直接将生成的<li>标签追加到<ul>的内容区域,无需处理返回值问题。

内容的提问来源于stack exchange,提问作者Sig

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 14:45:57