0

我有一个名为search_form这样的方法的助手:

module Admin::BaseHelper
  def search_form(*args)
    # my great code here
  end
end

要在我的 HAML 代码中调用此方法,我可以这样做:

= search_form
= search_form()
= search_form(param1: "value1", param2: "value2"...)

我的问题是第一次打电话。当我在任何 HAML 文件中执行此操作时,它会呈现我的助手。除非我的文件名是 _search_form.html.haml。是这样的话,它返回nil.

如果我在帮助程序中添加了一个 raise 错误,我注意到我的方法没有被调用,但我无法找到被调用的内容以及原因。

如果我使用第二行和第三行的语法,它可以通过调用我的辅助方法按预期工作。

所以我的问题是:这是标准的 Rails 行为还是错误?

4

1 回答 1

3

默认情况下,Rails 将查找与您的局部变量同名的局部变量,这可能与现有方法名称冲突。

解决此问题的一种方法是简单地重新定义部分内部的方法:

<% search_form = self.search_form %>
# Rest of the partial's code
于 2013-09-28T02:42:05.940 回答