2013-04-22 51 views
0

我想在@post視圖中觸發一個郵件程序'action'。如何觸發電子郵件? rails

class UserMailer < ActionMailer::Base 
    default from: "[email protected]" 

    def newsletter(post) 
    @greeting = "" 
    @users = User.all 
    @users.each do |user| 
     mail to: user.email, subject: post.title 
    end 
    end 
end 

= button_to 'Deliver' do 
    UserMailer.newsletter(@post).deliver 
    end 

如果我按這個按鈕,它會彈出錯誤「無路由匹配的職位/ 6」時,它顯然是存在的。

回答

1

你必須寫一個動作,它會調用UserMailer.newsletter(@post).deliver

def send_newsletter 
    @post = Post.find params[:id] 
    UserMailer.newsletter(@post).deliver 
    render :nothing => true 
end 

添加必要的途徑,並鏈接按鈕的行動

在routes.rb中

resources :posts do 
    member do 
    get :send_newsletter 
    end 
end 

鑑於

link_to 'Deliver', send_newsletter_post_path(@post) 

此外,您可以更改get方法發佈並提交發送簡訊的表單

+0

哇,這絕對看起來像Rails方式。謝謝。 – 2013-04-22 11:08:27