Ruby可以替换yield块中的字符串吗?例如,如果有人
drop_down "Dropdown" do
menu_item "Home", "/"
drop_down "Inner" do
menu_item "Inner Home", "/inner"
end
end
我想将其他drop_down
块中的drop_down
调用更改为调用sub_drop_down
或至少做一些特殊事情,以使其知道它在另一个drop_down
内{1}}阻止。这意味着用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
,这可能会导致li
1}} "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
方法是
drop_down "Dropdown" do
menu_item "Home", "/"
sub_drop_down "Inner" do
menu_item "Inner Home", "/inner"
end
end
一旦我添加了sub_drop_down方法
,以下代码就会有所作为sub_drop_down
但我不想强迫用户输入drop_down
而不是sub_drop_down
。我希望调用drop_down
而不是drop_down
。
我正在尝试在this project中添加新功能。 content_tag
方法的源代码是on lines 28-32 here,但我不确定如何将:class
dropdown-submenu
变量添加到dropdown
而不仅仅是{{1} }}。这个问题是我关于如何做到这一点的第一个想法,如果不可能,我会喜欢使用不同方法的解决方案。