0

これが明白に聞こえる場合は申し訳ありませんが、混乱しています。ナビゲーション リスト ヘルパーを構築しようとしています。

現時点では、配列からリンクのリストを受け取ります。

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 %>
4

1 に答える 1

3

ヘルパーは、配列ではなく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
于 2012-01-27T11:08:29.857 に答える