أين أضع أساليب المساعد لوجهات نظر ActionMailer؟
-
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
طريقة التمديد للمصفوفات التي توفرها القضبان.
سؤال تم الإجابة عليه بالفعل ، لكنني لم أحصل على مكان/ما يجب تعديله من الردود الأخرى. إليكم كيف فعلت ذلك:
في الجزء السفلي من التطبيق/التكوين/المبدعون/incise.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 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
سيكون متاحًا في وجهة نظرك.