我想在@post视图中触发一个mailer 'action‘。
class UserMailer < ActionMailer::Base
default from: "example@gmail.com"
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如果我按下这个按钮,当它明显存在的时候,它会弹出“没有路由匹配posts/6”的错误。
发布于 2013-04-22 11:05:00
您必须编写一个操作,它将调用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方法以发布并提交用于发送时事通讯的表单。
https://stackoverflow.com/questions/16144699
复制相似问题