我在哪里可以为动作仪观点放置辅助方法?
-
02-10-2019 - |
题
我有一种采用一系列字符串并加入它们的方法,因此他们做这样的事情:
>> 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
然后,您也可以在视图中使用这些方法。
其他提示
值得一看 to_sentence
铁轨提供的阵列的扩展方法。
一个已经回答的问题,但是我没有从其他SO回答中可以修改哪个文件/文件。这是我的做法:
在应用程序/config/initializers/deaise.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,我必须同时使用Inclace和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
如果您要在视图中使用某种关闭方法,则可以使用 helper_method
直接在您的邮件中。
class MyMailer < ApplicationMailer
def mailer
mail to: '', subject: ''
end
private
helper_method def something_to_use_in_the_view
end
end
something_to_use_in_the_view
您可以在您看来可用。
不隶属于 StackOverflow