1

<li>アクティブなクラスを含むにラップされたリンクを生成するヘルパーが必要です。

サポート ブロックがなければ、これは簡単です。

  def nav_item(*args, &block)
    url = args[1]
    clazz = 'active' if current_page?(url)

    content_tag(:li, :class => clazz) do
      link_to(*args)
    end
  end

しかしlink_to、ヘルパーがコンテンツを定義するためのブロックをサポートするようにしたいのです。link_to を使用すると、次のことができます。

では、ヘルパーで同じことをサポートするにはどうすればよいでしょうか?

私がする必要があるのは、ブロックを に渡すことだけですlink_to。私の現在の試み

  def nav_item(*args, &block)
    url = if block_given?
      args.first
    else
      args[1]
    end
    clazz = 'active' if current_page?(url)
    content_tag(:li, :class => clazz) do
      if block_given?
        # What goes here?
      else
        link_to(*args)
      end
    end
  end
4

1 に答える 1