Помощен метод със същото име като partial

Имам помощник с метод с име 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 ли е или грешка?


person Naremy    schedule 28.09.2013    source източник
comment
Какво искаш да кажеш, че не работи? Получавате ли грешка?   -  person Leo Correa    schedule 28.09.2013
comment
Редактирах въпроса. Под работа имам предвид: извиква моята помощна функция.   -  person Naremy    schedule 28.09.2013


Отговори (1)


По подразбиране Rails ще търси локална променлива със същото име като вашето частично, което може да е в конфликт със съществуващите имена на методи.

Един от начините да заобиколите това е просто да предефинирате метода във вашия частичен:

<% search_form = self.search_form %>
# Rest of the partial's code
person Marcelo De Polli    schedule 28.09.2013