ArgumentError (wrong number of arguments (given 0, expected 2)): app/mailers/interview_mailer.rb:4:in `request' app/mailers/interview_mailer.rb:7:in `request' app/controllers/interviews_controller.rb:40:in `request_mail'
railsでアプリケーションを作っている際に上記のようなエラーが起きます。
mailerを使ってメール送信をする機能を作成したいと思っています。
メーラー
ruby
1class InterviewMailer < ApplicationMailer 2 default from: "example@mail.com" 3 4 def request(user, interviewer) 5 @user = user 6 @url = "http://aaaa/users/#{@user.id}/interviews" 7 mail(to: interviewer.email, subject: "テスト") 8 end 9end
コントローラ
ruby
1 def request_mail 2 @interviewer = User.find_by(mailer_params) 3 InterviewMailer.request(@user, @interviewer).deliver_now 4 redirect_to :index, notice: "メールを送信しました" 5 end 6 7 def set_user 8 @user = User.find(params[:user_id]) 9 end
request_mail内でメイラーのrequestメソッドを呼び出し、引数に@user(set_userで定義したもの)と@interviewerを渡しています。
そしてviewからform_tagのリンク先としてrequest_mailアクションを指定しています。
view
ruby
1<%= form_tag(controller: :interviews, action: :request_mail, method: :post) do %> 2 <%= select_tag :email, options_for_select(User.where.not(id:params[:user_id]).map{|user| [user.email]}) %> 3 <%= submit_tag "送信" %> 4<% end %>
エラーを見るに原因はメーラーとコントローラの上記部分にあるようなのですが、具体的にどこが原因なのかわからず詰まっています。
回答2件
あなたの回答
tips
プレビュー