我想在@post视图中触发邮件“动作”。
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
如果我按下此按钮,当它显然存在时,会弹出错误“没有路线匹配帖子/ 6”。
答案 0 :(得分:2)
你必须写一个动作,它将调用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方法发布并提交表单以发送简报