我在哪里为ActionMailer视图添加帮助方法?

我有一个方法,它接受一个字符串数组并加入它们,所以他们做这样的事情:

>> my_arr => ["A", "B", "C"] >> and_join(my_arr) => "A, B, and C" 

我希望我的邮件可以访问,以便我可以将一些信息输出到电子邮件中。 我似乎无法找到一个好的地方把它放在application_helper.rb文件中,它没有在那里找到它。 它应该去哪里?

使用邮件程序中的帮助程序方法定义要使用的帮助程序类

 # mailer_helper.rb module MailerHelper def and_join(arr) # whatever … end end # my_mailer.rb class MyMailer < ActionMailer::Base helper MailerHelper … end 

那么你也可以在视图中使用这些方法。

值得查看rails提供的数组的to_sentence扩展方法。

一个已经回答的问题,但我没有从其他SO响应中获得修改的位置/文件。 我是这样做的:

在app / config / initializers / devise.rb的底部你可以添加:

 Devise::Mailer.class_eval do helper :application # includes "ApplicationHelper" end 

此示例将包含/app/helpers/application_helper.rb中的方法。 您可以包含另一个帮助文件 – 例如,如果该方法仅用于邮件程序或仅用于另一个控制器。 我需要的def全部使用,所以我放入该文件,以便所有视图都可以访问它。

+1,工作正常,只是一点点修正:

您必须在帮助文件中使用模块而不是

 # mailer_helper.rb module MailerHelper def and_join(arr) # whatever … end end 

就我而言,对于Rails 5.1,我必须同时使用include和helper方法,如下所示:

 include ApplicationHelper helper :application 

然后继续正常使用该方法。

 class MyMailer < ActionMailer::Base include ApplicationHelper helper :application def my_mailer_method my_helper_method_declared_in_application_helper .. end end