আমার অ্যাকশনমেলার ভিউগুলিতে আমার দর্শন সহায়কদের কীভাবে ব্যবহার করবেন?


227

আমি app/helpers/annotations_helper.rbআমার রিপোর্টমেলার ভিউ ( app/views/report_mailer/usage_report.text.html.erb) এ সংজ্ঞায়িত পদ্ধতিগুলি ব্যবহার করতে চাই । আমি এটা কিভাবে করবো?

এই গাইডের উপর ভিত্তি করে মনে হচ্ছে add_template_helper(helper_module)পদ্ধতিটি আমার যা চাইবে তা করতে পারে তবে কীভাবে এটি ব্যবহার করব তা আমি বুঝতে পারি না।

(বিটিডাব্লু, আপনি মেলর দর্শনে বিভিন্ন সেট সহায়কদের অ্যাক্সেস পাওয়ার কোনও কারণ আছে? এটি বেশ বিরক্তিকর is


উত্তর:


324

আপনি নিজের ইমেলগুলি পরিচালনা করতে মেলার শ্রেণিতে:

class ReportMailer < ActionMailer::Base
  add_template_helper(AnnotationsHelper)

  ...
end

4
এই ক্ষেত্রে আমার জন্য কাজ করে না (রেলস ৩.২.৮): আমার কাছে একটি অ্যাপ্লিকেশন কনট্রোলার সংজ্ঞায়িত পদ্ধতি রয়েছে এবং এটি সাহায্যকারী_মোথড: আমার_হেল্পার_ওয়ান্নাবে দ্বারা সহায়ক হিসাবে তৈরি করা হয়েছে, তবে "মাই_হেল্পার_ওয়ানাবে" পদ্ধতিটি মেইলারে উপলব্ধ হয় না।
জিয়াং এনগুইন

রেল 3 এ কীভাবে হ্যান্ডেল করা যায় তার জন্য নীচের ডিউকের উত্তর দেখুন
ক্রিস পিটারস

3.2.11 কারাগারে কাজ
জানুয়ারী

1
আমি ভেবেছিলাম এগুলি কি স্বয়ংক্রিয়ভাবে 4 রেলের অন্তর্ভুক্ত হওয়ার কথা? গাইড.আরবিওনরইলস.আর.২
গ্যাবডেস

6
এটি একটি প্রাচীন উত্তর তবে কেবল এই
ব্যান্ড

158

রেলস 3 এ, কেবলমাত্র আপনার অ্যাকশনমেলার শ্রেণীর শীর্ষে সাহায্যকারী পদ্ধতিটি ব্যবহার করুন:

helper :mail   # loads app/helpers/mail_helper.rb & includes MailHelper

আমি কেবল একটি ব্লকে পাস করেছি, যেহেতু আমার কেবলমাত্র একটি মেইলারে এটির দরকার:

helper do
  def host_url_for(url_path)
    root_url.chop + url_path
  end
end

(কনফিগারেশন_অ্যাকশন_মাইলআর। ডেফল্ট_ইউর_অ্যাপশন সেট করতে ভুলবেন না))

(এবং যদি আপনি url_for ব্যবহার করেন তবে অবশ্যই প্রবেশ করুন: কেবল_পাথ => মিথ্যা)


3
এটি কাজ করে তবে পৃথক অ্যাকশনমেলার ক্লাসে অ্যাপ্লিকেশনকন্ট্রোলারে ইতিমধ্যে সংজ্ঞায়িত সাহায্যকারীদের পুনঃনির্দিষ্ট করতে আক্কর মনে হয়। অ্যাকশনমেলারটি অ্যাকশন নিয়ন্ত্রণকারীকে প্রসারিত করে যাতে তারা একটি সাধারণ শ্রেণিবিন্যাস থেকে আসে। আপনার সমাধানের চেয়ে
কারাগারে

3
এবং যদি সহায়ক কোনও নামস্থানে থাকে তবে আপনি যা করতে পারেনhelper :'namespace/mail'
জোনাথন ব্যাটসন

সহায়ক যদি কোনও নামস্থানে থাকে তবে এটি কেবল একটি স্ট্রিং গ্রহণ করে (প্রতীকের পরিবর্তে)helper 'namespace/mail'
Pwnrar

2
5.2 কারাগারে কাজ!
রুসউ অ্যালেক্সানড্রে

28

3 রেলগুলিতে সমস্ত মেলারের জন্য ("অ্যাপ্লিকেশন" সহায়তা স্থাপন করে):

# config/application.rb:
...
config.to_prepare do
  ActionMailer::Base.helper "application"
end

ভাগ করা ইমেল পার্টিশালের জন্য সেরা উত্তর। ধন্যবাদ!
অ্যালেক্সি শিন

2
সত্য নয় - helper :applicationails.২.১ রেলগুলিতে কাজ করে।
স্টিচচেজার

এমনকি নিজের ইমেল টেম্পলেটগুলির জন্যও সূক্ষ্ম কাজ করে devisehelper :applicationএই ক্ষেত্রে কাজ করে না।
সোভেন আর।

1
4.2.5.1 এর জন্য কাজ করছে না - include ApplicationHelperকাজ করেছে
20:44

23

4 রেল অন রুবেলের জন্য আমাকে 2 টি কাজ করতে হয়েছিল:

(1) ডিউক যেমন ইতিমধ্যে বলেছে, আপনি যে সহায়কটি যুক্ত করতে চান তা UsersHelperউদাহরণ হিসাবে থাকলে যুক্ত করুন then

helper :users

উদ্ভূত ActionMailerশ্রেণিতে (যেমন app/mailers/user_mailer.rb)

(২) এর পরে, আমি একটি নতুন ত্রুটি পেয়েছি:

ActionView::Template::Error (Missing host to link to! Please provide the :host
parameter, set default_url_options[:host], or set :only_path to true)

এটি ঠিক করতে, লাইনটি যুক্ত করুন

config.action_mailer.default_url_options = { :host => 'localhost' }

config/environments/*.rbফাইল প্রতিটি । জন্য config/environments/production.rb, localhostউত্পাদন সহায়ক-উত্পাদিত ইউআরএলগুলির জন্য আরও উপযুক্ত হোস্টের সাথে প্রতিস্থাপন করুন ।


প্রশ্ন: # 2 এর জন্য, কেন মেল ভিউয়ের এই তথ্যের প্রয়োজন হয়, এবং নিয়মিত মতামতের প্রয়োজন হয় না?

উত্তর: কারণ নিয়মিত মতামতগুলি জানার দরকার নেই host, যেহেতু সমস্ত উত্পন্ন লিঙ্কগুলি তারা লিঙ্ক করে এমন হোস্ট থেকে দেওয়া হয়। ইমেলগুলিতে প্রদর্শিত লিঙ্কগুলি একই হোস্ট থেকে দেওয়া হয় না (যদি না আপনি লিঙ্ক করছেন hotmail.comবা gmail.comইত্যাদি)


রচিত নাম সম্পর্কে কী? User::ComposedHelper
সিরিল ডুচন-ডরিস


17

(এটি একটি পুরানো প্রশ্ন তবে রেলগুলি বিবর্তিত হয়েছে তাই আমি ails.২ রেলগুলিতে আমার জন্য কী কাজ করে তা ভাগ করছি))

সাধারণত আপনি কোনও ইমেলের বিষয়বস্তু পাশাপাশি এইচটিএমএল রেন্ডারিংয়ে একটি কাস্টম ভিউ সহায়ক ব্যবহার করতে পারেন। নিম্নলিখিত ক্ষেত্রে নীচের মতামত সহায়ক সহায়ক / অ্যাপ্লিকেশন / সহায়তা / অ্যাপ্লিকেশন_হেল্পার.আরবিতে রয়েছে :

module ApplicationHelper

  def mydate(time, timezone)
    time.in_time_zone(timezone).strftime("%A %-d %B %Y")
  end

end

আমি একটি গতিশীল ইমেল সাবজেক্ট লাইন এবং টেমপ্লেট তৈরি করতে পারি যা উভয় সহায়ক ব্যবহার করে তবে রেলগুলি অ্যাপ্লিকেশনস-হেল্পারকে স্পষ্টভাবে অ্যাপস / মেলার / ইউজার_মাইল.আরবিতে দুটি ভিন্ন উপায়ে ব্যবহার করতে বলেছি , আপনি এখানে দ্বিতীয় এবং তৃতীয় লাইনে দেখতে পাচ্ছেন :

class UserMailer < ApplicationMailer

  include ApplicationHelper  # This enables me to use mydate in the subject line
  helper :application  # This enables me to use mydate in the email template (party_thanks.html.erb)

  def party_thanks
    @party = params[:party]
    mail(to: 'user@domain.com',
    subject: "Thanks for coming on #{mydate(@party.created_at, @party.timezone)}")
  end

end

আমার উল্লেখ করা উচিত যে এই দুটি লাইন ঠিক পাশাপাশি কাজ করে তাই একটি বা অন্যটি চয়ন করুন:

helper :application

add_template_helper(ApplicationHelper)

এফডাব্লুআইডাব্লু, অ্যাপ / ভিউ / ইউজার_মিলার / পার্টি_থ্যান্স.এইচটিএমএলতে ইমেল টেম্পলেটটি দেখতে এমন দেখাচ্ছে:

<p>
  Thanks for coming on <%= mydate(@party.created_at, @party.timezone) %>
</p>

এবং অ্যাপ্লিকেশন / নিয়ামক / পার্টি_কন্ট্রোলআরআরবি নিয়ামকটি দেখতে এমন দেখাচ্ছে

class PartyController < ApplicationController
  ...
  def create
    ...
    UserMailer.with(party: @party).party_thanks.deliver_later
    ...
  end
end

আমাকে ওপি (@ টম লেহম্যান) এবং @ গাবোডেসের সাথে একমত হতে হবে যে https://guides.rubyonrails.org/action_mailer_basics.html#used-action-mailer- সহায়তাকারীদের প্রদত্ত এই সমস্তটি বেশ বিশৃঙ্খলা বোধ করে so ।


5

রেলস 4 এর ক্ষেত্রে আমার ক্ষেত্রে, আমি এটি করি:

# app/mailers/application_mailer.rb
class ApplicationMailer < ActionMailer::Base
  add_template_helper ApplicationHelper
  ...
end

এবং

# app/mailers/user_mailer.rb
class AccountMailer < ApplicationMailer
  def some_method(x, y)
  end
end

যাতে আপনাকে add_template_helperসর্বত্র নির্দিষ্ট করতে না হয়।

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.