0

在我之前的问题开发生成 HTML 的辅助函数之后:我应该使用嵌套的 content_tag()s 还是 partials?我现在确信重写我的一些更复杂的 HTML 生成辅助函数以使用模板而不是嵌套content_tag()调用。

所以这是我原来的助手:

def bootstrap_navlist(&block)
  classes = ['nav', 'nav-list']

  content_tag(:ul, class: classes.join(' ')) do
    capture(self, &block)
  end
end

这就是我现在想出的使用部分:

def bootstrap_navlist(&block)
  render partial: 'bootstrap/navlist'
end

# views/bootstrap/_navlist.html.erb
<ul class="<%= ['nav', 'nav-list'].join(' ') %>">
  How do I output the block here??
</ul>

该块看起来像这样,但它可以是您喜欢的任何 HTML:

= bootstrap_navlist do |navlist|
  = navlist.item 'Home', '#'
  = navlist.sublist 'Meine Favoriten', '/favorites' do |sublist|

你可以猜到,我不确定如何在视图中输出块。我应该简单地在帮助程序中捕获它并将其作为:local变量传递吗?还是有更常见的方法?

非常感谢。

4

1 回答 1

2

这是内容标签没有深度嵌套的情况,作为助手是合理的。

你的助手和部分看起来像这样:

def bootstrap_navlist(&block)
  render template: 'bootstrap/navlist', :locals => { :block => block }
end


<ul class="nav nav-list">
  <%= capture(self, &block) %>
</ul>
于 2012-09-22T13:06:15.303 回答