1

Rubyでyieldブロック内の文字列を置き換えることは可能ですか? たとえば、誰かが持っている場合

drop_down "Dropdown" do
    menu_item "Home", "/"
    drop_down "Inner" do
        menu_item "Inner Home", "/inner"
    end
end

drop_downdrop_downのブロック内の呼び出しを呼び出しに変更するsub_drop_downか、少なくとも特別なことをして、別のdrop_downブロック内にあることを知らせたいと思います。drop_downこれは、ブロック内の文字列を に置き換えることを意味しsub_drop_downます。

上記のコード サンプルは、

<li class="dropdown">
  <a href="#" class="dropdown-toggle" data-toggle="dropdown">
    Dropdown
    <b class="caret"></b>
  </a>
  <ul class="dropdown-menu">
    <li class="active">
      <a href="/">Home</a>
    </li>
    <li class="dropdown">
      <a href="#" class="dropdown-toggle" data-toggle="dropdown">
        Inner
        <b class="caret"></b>
      </a>
      <ul class="dropdown-menu">
        <li>
          <a href="/inner">Inner Home</a>
        </li>
      </ul>
    </li>
  </ul>
</li>

しかし、2 番目のbebe を、もう一方の呼び出しを beingに変更することで提供できるようにしたいと考え<li class="dropdown">ています。その呼び出しを変更する方法はありますか?<li class="dropdown-submenu">drop_downsub_drop_downclassli"dropdown-submenu"

私が持っている現在のsub_drop_down方法は

def sub_drop_down(name)
    content_tag :li, :class => "dropdown-submenu" do
        drop_down_link(name) + drop_down_list {yield}
    end
end

そして、sub_drop_down メソッドを追加すると、次のコードはいくらか機能します

drop_down "Dropdown" do
    menu_item "Home", "/"
    sub_drop_down "Inner" do
        menu_item "Inner Home", "/inner"
    end
end

sub_drop_downしかし、ユーザーに代わりに入力を強制したくありませんdrop_downsub_drop_downの代わりに呼ばれたいですdrop_down

このプロジェクトに新しい機能を追加しようとしています。drop_downメソッドのソース コードは28 ~ 32 行目content_tag :classにありますが、変数を追加する方法がわかりdropdown-submenuませんdropdown。この質問は、それを行う方法についての私の最初のアイデアでした。それが不可能な場合は、別の方法を使用した解決策が欲しいです.

4

0 に答える 0