我有需要字符串數組,並加入他們的方法,使他們做這樣的事情:我在哪裏可以爲ActionMailer視圖添加輔助方法?
>> my_arr
=> ["A", "B", "C"]
>> and_join(my_arr)
=> "A, B, and C"
這一點我想我的郵件不得不這樣我就可以輸出一些信息到電子郵件訪問。我似乎無法找到一個放置它並將其放入application_helper.rb文件中的好地方,並且在那裏找不到它。它應該去哪裏?
我有需要字符串數組,並加入他們的方法,使他們做這樣的事情:我在哪裏可以爲ActionMailer視圖添加輔助方法?
>> my_arr
=> ["A", "B", "C"]
>> and_join(my_arr)
=> "A, B, and C"
這一點我想我的郵件不得不這樣我就可以輸出一些信息到電子郵件訪問。我似乎無法找到一個放置它並將其放入application_helper.rb文件中的好地方,並且在那裏找不到它。它應該去哪裏?
使用您的郵件的helper
方法來定義輔助類使用
# mailer_helper.rb
module MailerHelper
def and_join(arr)
# whatever …
end
end
# my_mailer.rb
class MyMailer < ActionMailer::Base
helper MailerHelper
…
end
,那麼你可以使用視圖的方法爲好。
太棒了,工作! – DJTripleThreat 2010-09-10 01:24:24
太好了。將'包含MailerHelper'添加到'MyMailer
+1,工作得很好,只是一點點修正:
你必須使用模塊,而不是類在幫助文件:
# mailer_helper.rb
module MailerHelper
def and_join(arr)
# whatever …
end
end
的已經回答的問題,但我沒有從其他SO響應中獲得要修改的地方/文件。這是我如何做的:
在應用程序的底部/配置/初始化/ devise.rb可以補充一點:
Devise::Mailer.class_eval do
helper :application # includes "ApplicationHelper"
end
這個例子將包括在/ app /傭工/ application_helper方法。 RB。您可以改爲包含其他幫助程序文件 - 例如,如果該方法僅用於郵件程序或僅用於其他控制器。我需要的def被全部使用,所以我把它放在那個文件中,這樣所有的視圖都可以訪問它。
在我的情況下,爲Rails 5.1,我不得不同時使用包括和輔助方法,像這樣:
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
值得看看rails提供的數組的'to_sentence'擴展方法。 – Shadwell 2010-09-10 08:32:35
@Shadwell,發佈這個答案,我會給它+1。這正是我所期待的。 – DJTripleThreat 2010-09-10 18:13:30
類似的一個 - http://amolnpujari.wordpress.com/2013/12/27/highlight-changes-being-made-on-activerecord-object-inside-mail/ – 2013-12-27 11:32:07