كيفية إرسال عناوين url في رسائل البريد الإلكتروني الخاصة البيئة ؟
-
20-08-2019 - |
سؤال
استخدام التعليمات البرمجية التي تم إنشاؤها بواسطة restful_authentication ، ونحن عادة الحصول على 'localhost' كما URL في تسجيل و تفعيل الرسائل.أنا في محاولة لخلق شيء مثل هذا بدلا من ذلك:
def signup_notification(user, host)
setup_email(user)
@subject += 'Please activate your new account'
@body[:url] = "http://#{host}/activate/#{user.activation_code}"
end
ومع ذلك ، منذ الفعلية الدعوة إلى تسليم البريد في مراقب, لا أستطيع فعل هذا:
UserMailer.deliver_signup_notification(user, request.host_with_port)
منذ طريقة الطلب غير متوفر في النماذج.ما هي أفضل طريقة للذهاب عن فعل هذا ؟
فكرت في تخزين عناوين المواقع في المجال في YAML الملف ثم تحميلها عند بدء التشغيل ولكن بعد ذلك الموانئ قد تتغير ، لذا فإنه لن يعمل.
بدلا من ذلك, فكرت في خلق فئة ثابتة متغيرة في مكان ما أن يتم تعيين عند تحميل التطبيق ، ولكن لا أعرف كيفية التوجه نحو القيام بذلك.هو طريقة طلب المتاحة المهيآت?
المحلول
ومحاولة current_request المساعد، وصفت في http://codeshooter.wordpress.com/2009/08/
وعملت بالنسبة لي
نصائح أخرى
وعن طريق ActiveMailer، أنا وضعت هذا في config/envrionments/production.rb
config.action_mailer.default_url_options = { :host => "my.host.com" }
في لapp/models/event_mailer.rb
نموذج
def new_event(event)
recipients EventMailer::NO_REPLY
bcc event.emails('new_event')
from EventMailer::FROM_EMAIL
subject "#{EventMailer::SUBJECT_HEADER} Event Updated :: #{event.title}"
content_type "text/plain"
body :event => event
end
وبعد ذلك في الارسال عرض app/views/event_mailer/new_event.rb
You can view the event by going to: <%= url_for(:controller => "events", :action => "show", :id => @event.id, :only_path => false) %>
والذي يولد في البريد:
You can view the event by going to: http://my.host.com/events/11
لدي نفس المشكلة أيضا و هذا ما قمت به
في نموذج المستخدم إضافة :تستضيف attr_accessible ، ثم أضيف هذه الطريقة
def host=(value) write_attribute :host, value end
في المستخدم التحكم في الأساليب التي ترسل البريد الإلكتروني مثل إنشاء وتفعيل وضعت
@user.host = request.host_with_port
منذ مازلت مستجد على القضبان لذلك أنا آمل حقا شخص ما سوف يأتي مع أفضل الممارسات حل لهذه المشكلة.
ويتم الوصول إلى اسم المضيف الخادم الخاص بك عن طريق وجدت في رأس المضيف الطلب. يجب أن لا يكون الوصول إليها في النماذج (على افتراض القضبان غير عاقل). ولكن إذا كنت تستطيع الوصول إلى الكائنات طلب في وحدات تحكم يمكنك إدراج تلك القيمة إلى حقل النموذج الخاص بك عند سحب الكائنات نموذج من ديسيبل.