Rails - 如何在控制器中包含mail_to帮助程序

时间:2011-03-01 18:08:36

标签: ruby-on-rails ruby-on-rails-3

在我的控制器中我需要格式化一个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,但这不起作用。

由于

2 个答案:

答案 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
相关问题