Как микшировать и вызывать link_to из контроллера в Rails?

Это похоже на вопрос новичка, но простой ответ ускользает от меня. Мне нужно вызвать link_to в методе ActionController , чтобы выдать ссылку HTML. ActionView :: Helpers :: UrlHelper.link_to вызывает url_for , но при этом вызывается версия AV-модуля вместо версии контроллера. Мне удалось заставить это сделать то, что я задумал, поместив

  #FIXME there must be a better way to mixin link_to
  alias_method :self_url_for, :url_for
  include ActionView::Helpers::UrlHelper
  alias_method :url_for, :self_url_for

в контроллер. Но я все еще не уверен, почему это работает именно так. Может ли кто-нибудь объяснить объем метода и скрытие, которое здесь происходит? Какой лучший способ смешать link_to (или, как правило, включить только некоторые методы из модуля), чтобы я мог вызвать его в контроллере (генерация строки flash со ссылкой - это случай использования)

Пожалуйста, никаких лекций о MVC - во всяком случае, link_to должен быть в модуле, отдельном от url_for . Судя по количеству шума, многие люди сталкиваются с этой, казалось бы, тривиальной загвоздкой и в конечном итоге тратят час, делая это «методом Rails», хотя на самом деле все, что нужно, - это минутный взлом, чтобы мое приложение работало сейчас. Есть ли "путь рельсов" возможно, сделать это с помощью помощников? Или лучший рубиновый способ?

51
задан tribalvibes 1 October 2010 в 11:49
поделиться