辅助方法与partial的同名

时间:2013-09-28 02:09:29

标签: ruby-on-rails ruby-on-rails-3.2 helper renderpartial

我有一个名为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

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

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

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

1 个答案:

答案 0 :(得分:3)

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

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

<% search_form = self.search_form %>
# Rest of the partial's code