2

我有一些 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等。

4

1 回答 1

5

传递给的块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
于 2012-08-29T18:21:56.177 回答