Переопределение ApplicationHelper? - PullRequest
0 голосов
/ 16 июня 2009

В используемом нами движке есть ApplicationHelper, который выглядит следующим образом:

module ApplicationHelper
  def page_title()
    # ...
  end
end

Это вызывается рядом представлений в двигателе. Я хотел бы переопределить этот метод в моем приложении, чтобы предоставить другой заголовок по умолчанию. Как мне это сделать? Просто определение моего собственного ApplicationHelper, похоже, не сработало.

Ответы [ 2 ]

2 голосов
/ 17 июня 2009

Вы определили метод page_title в своем модуле ApplicationHelper? Просто наличие ApplicationHelper само по себе не сделает этого.

По умолчанию ваш ApplicationHelper модуль уже должен быть в app/helpers/application_helper.rb. Файлы вашего приложения требуются rails после того, как для него требуются плагины, которые вы используете. Это означает, что любой метод, определенный вами в app / helpers / application_helper.rb, должен переопределять методы, определенные в коде плагинов.

Такое поведение возникает из-за открытой структуры классов ruby. В любое время и в любом месте любой класс / модуль / объект может быть вновь открыт для добавления к нему методов и атрибутов. Более или менее.

Не могли бы вы опубликовать часть кода, который вы пытаетесь переопределить методом движка?

1 голос
/ 17 июня 2009

Доступны ли другие методы, определенные в вашем ApplicationHelper?

Если да , помощник движка, вероятно, загружен перед вашим ApplicationHelper, а ваш метод перезаписан.

Если нет , Rails, возможно, никогда не загрузил ваш модуль, потому что он думает, что уже знает о ApplicationHelper и не пытается загрузить его снова.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...