这似乎是一个初学者问题,但简单的答案却让我不知所措。我需要在ActionController
方法中调用link_to
来生成一个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方式”进行操作,而真正想要的是一个一分钟的hack,让我的应用程序立即工作。是否有一种使用helper的“Rails方式”来实现这一点?还是有更好的Ruby方式?