我有一些HAML代码可以在10个视图中重复,并希望将它放入某种类型的帮助器中。在这里进行搜索会产生一些有趣的结果,但最终没有答案,所以:
在application_helper.rb
我有这个:
def pagination_helper(object)
haml_tag :div, :class => 'apple_pagination page_info' do
page_entries_info @book_formats
paginate @book_formats
end
end
在视图模板中,我有:
- pagination_helper(@book_formats)
如果我尝试用=
调用它来输出内容,我会收到错误。
以上不会给我一个错误,但它也不会调用这些方法。我得到空的div。
最终我要重复的代码是:
.apple_pagination.page_info
= page_entries_info @book_formats
= paginate @book_formats
代码将是相同的,除了object
会改变,我从视图模板发送它。例如,@book_formats
会更改为@dvds
等。
答案 0 :(得分:4)
传递给haml_tag
的块不会自动添加到输出中。您需要使用haml_concat
:
def pagination_helper(object)
haml_tag :div, :class => 'apple_pagination page_info' do
haml_concat(page_entries_info @book_formats)
haml_concat(paginate @book_formats)
end
end