использование вспомогательных методов в представлении в рельсах 3 - PullRequest
4 голосов
/ 24 ноября 2010

есть кое-что, что немного беспокоит меня о рельсах 3. я пытаюсь обновить свое приложение с rails 2 до rails 3.

Я выполнил все необходимые шаги, и у меня до сих пор все шло хорошо, кроме одного:

У меня есть вспомогательный метод, который по-разному определяется в разных помощниках, например, он определен в application_helper одним способом, и тот же метод определен по-другому в homepage_helper, и определен по-другому в другом помощнике, скажем, video_helper Кроме того, он используется в общем представлении, которое используется во всем приложении. Теперь, если я нахожусь на домашней странице, я хочу, чтобы эта функция вызывалась из homepage_helper, и если я нахожусь на странице видео, функция должна вызывается из video_helper, основанного на концепции соглашения в рельсах, это прекрасно работало в рельсах 2, но в рельсах 3 функция всегда вызывается из последнего помощника, упорядоченного по алфавиту, то есть в примере video_helper.

Как я могу это исправить? Добрый совет.

Ценю всю помощь.

Ответы [ 2 ]

2 голосов
/ 03 января 2011

В рельсах 3 все помощники всегда загружены.

Вы можете либо:

1) называйте своих помощников по-разному.

2) Простота определения, какие помощники вы хотите

3) Проверьте контроллер у помощников, чтобы определить, какого помощника предоставить.

1 голос
/ 11 марта 2011

Если я правильно понимаю ваш пост, у вас есть что-то вроде

module ApplicationHelper
  def error_messages
    ...
  end
end

module VideoHelper
  def error_messages
    ...
  end
end

module HomepageHelper
  def error_messages
    ...
  end
end

А теперь вы хотите вызвать error_messages от определенного помощника, и вызов error_messages произвольно ведет себя иначе, чем в Rails 2. Прав ли я до сих пор? Если нет, вы можете игнорировать оставшуюся часть этого поста = P

Я просто потратил полчаса, играя с синтаксисом и одним из моих проектов в irb, и самым близким, что я мог получить, было что-то вроде Posts :: PostsHelper.helper_method, который работает в irb, если я сначала включаю PostsHelper .

С учетом сказанного, если вы готовы сделать что-то вроде Class :: ClassHelper.helper_method, почему бы просто не переименовать «helper_method», чтобы он был уникальным для вашего ClassHelper? Вы должны будете изменить каждый вызов "helper_method", чтобы он был специфичным для какого-то помощника. Я думаю, что это гораздо более чистое решение

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