在我的控制器中我需要格式化一个json对象,这就是为什么我需要包含几个帮助器。
到目前为止,我的控制器中有以下内容:
include ApplicationHelper
include ActionView::Helpers::TextHelper
include ActionView::Helpers::TagHelper
这对simple_format非常有用,问题是当comment.content有一个电子邮件地址时,rails trys执行mailto链接会中断,在日志中显示以下错误:“NoMethodError(undefined method`mail_to'for .. ..“
有关如何添加它的任何想法?我尝试添加包含ActionView :: Helpers :: UrlHelper,但这不起作用。
由于
答案 0 :(得分:10)
在执行“查看”任务(如生成链接)时,您可以在控制器中使用 view_context 。关于它的好处是您不必在控制器中包含视图助手。
e.g。在你的控制器中你可以创建一个变量,它将是一个带有link_to的html链接。
link = view_context.link_to("link", your_awesome_path(@awesome))
我没有对此进行过测试,但您希望能够在控制器中执行此操作:
email_link = view_context.mail_to(@user.email)
RyanB在paper_trail railscast中使用 view_context :255-undo-with-paper-trail
不确定这是否能解决您的问题,因为不确定您使用JSON助手等做了什么,但这可能会有所帮助。
答案 1 :(得分:1)
我通过以下
解决了这个问题class CrazyPresenter
include Rails.application.routes.url_helpers
include ActionView::Helpers::TextHelper
include ActionView::Helpers::TagHelper
include ActionView::Helpers::UrlHelper
def controller
nil
end
end