是否可以在 Ruby 中替换 yield 块中的字符串?例如,如果有人有
drop_down "Dropdown" do
menu_item "Home", "/"
drop_down "Inner" do
menu_item "Inner Home", "/inner"
end
end
我想将drop_down
otherdrop_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>
但是我希望第二个<li class="dropdown">
成为<li class="dropdown-submenu">
我可以通过将drop_down
另一个内的调用更改为成为sub_drop_down
可能导致class
forli
成为的调用来提供"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_down
. 我想sub_drop_down
被称为而不是drop_down
。
我正在尝试在这个项目中添加一个新功能。该drop_down
方法的源代码在此处的第 28-32 行,但我不确定如何将content_tag
:class
变量添加为dropdown-submenu
not just dropdown
。这个问题是我关于如何做到这一点的第一个想法,如果不可能,我会喜欢使用不同方法的解决方案。