2011-09-09 5 views
1

ActionMailer를 사용하여 전자 메일을 보내고 있지만 Sinatra의 기울기 렌더링을 사용하고 싶습니다. 그래서 내가 할 수있는시나 외부에서시나의 인스턴스 범위에 액세스하는 방법을 모르는이 :Sinatra의 인스턴스 스코프에서 실행중인 메소드

희망
class Mailer < ActionMailer 
    def test(address) 
    mail(:to=>address, 
     :body => 'turns out you need something here?') do |format| 
     details = erb(:myview) 
     format.text { details } 
     format.html { markdown(details) } 
    end 
    end 
end 

내가 할 노력하고있어,하지만 그 순간에 나는 '방법을 얻고 무엇을 볼 수 있습니다 찾을 수 없음 '오류가 발생했습니다. Sinatra의 인스턴스 범위를 형식 블록에 포함시킬 수있는 아이디어는 무엇입니까?

감사합니다.

답변

1

다음은 몇 가지 옵션입니다.

번호 하나 (추한의 종류) 앱이

get '/send_mail' do 
    Mailer.new.test('[email protected]', self) 
end 

번호 두

앱의 헬퍼 내에 메일러 클래스를 정의 블록에서 다음

class Mailer < ActionMailer 
    def test(address, instance) 
    mail(:to=>address, 
     :body => 'turns out you need something here?') do |format| 
     details = instance.erb(:myview) 
     format.text { details } 
     format.html { markdown(details) } 
    end 
    end 
end 

. 이렇게하면 erb에 액세스 할 수 있습니다. 나는 평범한 옛 것과 매우 비슷한 것을했다 메일 gem. 나는 전체 클래스가 아닌 메소드를 정의했다. 그래도 작동해야한다고 생각합니다. 시나 및/또는 틸트의 코드에서

helpers do 
    class Mailer < ActionMailer 
    def test(address) 
     mail(:to=>address, 
      :body => 'turns out you need something here?') do |format| 
     details = erb(:myview) 
     format.text { details } 
     format.html { markdown(details) } 
     end 
    end 
    end 
end 

3 번

봐, 그것은 더 이상 요구 인스턴스에 대한 관심까지 스택까지 ERB를 따라하지, 그것을 복제.

+0

위대한 답변 - 감사합니다! –

관련 문제