Ruby on rails rails内容标签导航生成器帮助程序

Ruby on rails rails内容标签导航生成器帮助程序,ruby-on-rails,helpers,content-tag,Ruby On Rails,Helpers,Content Tag,很抱歉,如果这听起来很明显,但我感到困惑。 我正在尝试构建一个导航列表帮助器 此时,它从数组接收链接列表 module ApplicationHelper def site_pages %w{index about contact promotions} end def nav_builder list list.map do |l| content_tag :li do content_tag :a, :href =>

很抱歉,如果这听起来很明显,但我感到困惑。 我正在尝试构建一个导航列表帮助器

此时,它从数组接收链接列表

module ApplicationHelper
  def site_pages
    %w{index about contact promotions}
  end

  def nav_builder list     
    list.map do |l|
      content_tag :li do
        content_tag :a, :href => "#{l}_path" do
          l
        end
      end
    end
  end
end
[<li><a href="index_path">index</a></li> <li><a href="about_path">about</a></li> <li><a href="contact_path">contact</a></li> <li><a href="promotions_path">promotions</a></li>]
但当我运行页面时,它输出的所有内容都是作为数组的页面

module ApplicationHelper
  def site_pages
    %w{index about contact promotions}
  end

  def nav_builder list     
    list.map do |l|
      content_tag :li do
        content_tag :a, :href => "#{l}_path" do
          l
        end
      end
    end
  end
end
[<li><a href="index_path">index</a></li> <li><a href="about_path">about</a></li> <li><a href="contact_path">contact</a></li> <li><a href="promotions_path">promotions</a></li>]
[
  • ]
  • 而不是显示链接列表。 有什么特别的事要做吗

    ==编辑==

    我这样称呼我的建筑商:

    <%= nav_builder site_pages %>
    

    希望帮助程序返回HTML字符串,而不是数组。尝试将数组元素合并到单个字符串中:

    def nav_builder list     
      list.map do |l|
        content_tag :li do
          content_tag :a, :href => "#" do
            "test"
          end
        end
      end.join("\n").html_safe
    end
    

    助手应该返回一个HTML字符串,而不是数组。尝试将数组元素合并到单个字符串中:

    def nav_builder list     
      list.map do |l|
        content_tag :li do
          content_tag :a, :href => "#" do
            "test"
          end
        end
      end.join("\n").html_safe
    end
    

    当我这样做的时候,所有的东西都会在屏幕上以字符串的形式打印出来。它不会将其转换为html,因此我重复使用
    您应该将
    join(“\n)
    替换为
    join(“\n”).html\u safe
    以避免转义html。哦,小细节,它不会转换“{l}”路径(例如about\u路径)。结果是,但如果我通过散列运行它,{:home=>“/”,:about=>“/about=”/about“,:contact=>contact_path}…当我这样做时,仍然会将所有内容作为字符串打印在屏幕上。它不会将其转换为html,因此我重复使用
    您应该将
    join(“\n)
    替换为
    join(“\n”).html\u safe
    以避免转义html。哦,小细节,它不会转换“{l}”路径(例如about\u路径)。结果是,但如果我通过散列运行它,{:home=>“/”,:about=>“/about=”/about“,:contact=>contact\u path}”。。。