在帮助器中呈现content_for块

时间:2011-07-21 19:12:24

标签: ruby-on-rails templates helpers

我正在尝试通过帮助器呈现content_for块的结果。

我有一个模板(HAML)和布局如下:

# app/views/books/show.html.haml
-content_for(:page_header) do
     %h1= @book.title

# app/views/application.html.haml
...
=yield(:page_header) 
...

这绝对没问题。

我想要做的是在帮助器中进行调用。所以我的目标是:

# app/views/books/show.html.haml
-content_for(:page_header) do
     %h1= @book.title

# app/views/application.html.haml
....
=page_header(block)
....

# app/helpers/application.rb
....
def page_header(&block)

    # Some view logic
    # ...

    =yield(:page_header)
end
....

我可以通过以下方式调用帮助程序来实现部分结果:

# app/views/application.html.haml
=page_header { yield(:page_header) }

# app/helpers/application.rb
def page_header(&block)
  yield
end

但这让我觉得难看。

有什么想法吗?提前谢谢。

答案:再次使用content_for(:page_header)进行渲染。

1 个答案:

答案 0 :(得分:5)

您可能希望查看捕获以获取字符串中的输出然后使用它。方法如下:http://api.rubyonrails.org/classes/ActionView/Helpers/CaptureHelper.html#method-i-capture