我正在呈现以下html片段......
<div class="navbar navbar-fixed-top">
<div class="navbar-inner">
<div class="container">
<%= yield %>
</div>
</div>
</div>
...像这样:
<%= render :layout => "shared/menu" do %>
...code here...
<% end %>
现在为了更清理事物,我想隐藏渲染器中的渲染器,以便有类似的东西:
<%= bs_menu do %>
...code here...
<% end %>
我试过以下帮手没有成功:
def bs_menu(&block)
render(:layout => "shared/menu") &block
end
我从rails(3.2.1)中得到此错误:
你调用了渲染但没有给出任何:partial,:template, :inline,:file或:text选项。
我做错了什么?
答案 0 :(得分:1)
我认为你也可以这样做:
def bs_menu(&block)
render({:layout => "shared/menu"}, &block)
end
(也许你也可以省略花括号)。这是我将块传递给方法的标准方法。
答案 1 :(得分:0)
好的,我发现了如何编写助手。我没有正确地调用块:
def bs_menu(&block)
render(:layout => "shared/menu") do
block.call
end
end
我认为这是编写干净视图的一种非常简洁的方法。另一个选项是this。