Tôi có nhiệm vụ này với delayed_job:Job hoãn với i18n trên đường ray 3
def any_method
UserMailer.delay(queue: "Email", priority: 3).to_user_when_his_account_is_suspended(user, locale)
end
Nếu tôi gửi một email như đường ray mode:
def any_method
locale = params[:locale]
UserMailer.to_user_when_his_account_is_suspended(order, locale).deliver
#more code
end
Các email được gửi trên ngôn ngữ/ngôn ngữ thích hợp .
Tuy nhiên delay_job không nhận ra ngôn ngữ/ngôn ngữ thích hợp. Vào trường hợp này tôi có được Locale với locale = params[:locale]
, bạn có thể xem ví dụ sau:
locale = params[:locale]
UserMailer.delay(queue: "Email", priority: 3).to_user_when_his_account_is_suspended(user, locale)
Mailer Code:
def to_user_when_his_account_is_suspended(user, locale)
@user = user
@locale = locale
mail(:to => @user.email, :subject => t('.user_account_has_been_suspended'))
end
Làm thế nào tôi có thể khắc phục vấn đề này?
Ý anh là gì 'delayed_job không nhận ra vị trí thích hợp'? Bạn có muốn thêm 'phân phối' không? –
Nếu bạn thêm phương thức '.deliver' vào phương thức delay_job, bạn sẽ gặp lỗi. Tôi có nghĩa là các email đã gửi, không được gửi bằng ngôn ngữ thích hợp của anh ấy. Ngôn ngữ, được nhận trên phương thức của tôi với các tham số [: locale]. Cảm ơn bạn! – hyperrjas
params [: locale]? Điều đó nghe không đúng. Bạn có nghĩa là bạn tham khảo miền địa phương biến địa phương bên trong nhiệm vụ, bởi vì đó là cách duy nhất nó sẽ làm việc. –