我有一个名为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行为还是错误?
答案 0 :(得分:3)
默认情况下,Rails会查找与partial相同的局部变量,这可能与现有的方法名称冲突。
解决这个问题的一种方法是简单地重新定义部分内部的方法:
<% search_form = self.search_form %>
# Rest of the partial's code