1

@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に一致しません」というエラーがポップアップ表示されます。

4

1 に答える 1

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 メソッドを変更して、ニュースレターを送信するためのフォームを投稿および送信できます。

于 2013-04-22T11:05:00.233 に答える