2

ビュー内で Liquid テンプレートを使用してメールを送信するLiquid error: undefined method 'to_liquid' for #<Email:0x007f9ca1a62d28>と、オブジェクトでエラーが発生します。Emailただし、ブラウザーでビューを単独でレンダリングすると、問題なく動作します。

これが私の見解です:

= raw @template.render('email' => @email, 'organization' => @organization)

%p= sanitize("<a href='{{ unsubscribe_url }}''>Click here to unsubscribe</a>")

%p{style:'text-align:center;'}
  Sent with
  = link_to 'Vocalem', 'http://vocalem.com'

私のメーラーの関連部分:

class BulkMailer < ActionMailer::Base
  def bulk_email(recipients, email, organization)
    ...
    @organization = organization
    @email = email
    @template = Liquid::Template.parse(organization.current_email_template.body)

関連するモデル コード:

liquid_methods :subject, :body, :id

最後になりましたが、Liquid でエラーが発生した例 (ただし、通常のビューでは問題なく動作しています!):

{{email.body}}

奇妙なことに{{organization.display_name}}、エラーはスローされませんが、電子メールでは完全に空白になっています (プレーンビューで再び正常に動作しているにもかかわらず)。

ここで何が起こっているのか手がかりはありますか?

4

1 に答える 1

6

組織モデルで to_liquid を使用して Liquid メソッドを作成し、確認してみてください

def to_liquid
  {
   'display_name'=>self.name,
   'email_body'=>self.current_email_template.body 
  }
end
于 2012-08-31T08:24:34.597 に答える