سؤال

لدي طريقة تأخذ مجموعة من الأوتار وينضم إليها حتى يفعلوا شيئًا كهذا:

>> 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 سيكون متاحًا في وجهة نظرك.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top