前提・実現したいこと
Ruby on Railsにて新商品の紹介サイトを作っています。商品を検索して気になる物が見つかった場合にメールを担当者に送れるようにしたいです。メールの送り先を1つだけなら実装できましたが、所属ごとにメール送り先を切り分けて担当者に直接届くようにしたいです。メール情報@contactにuserをアソシエーションさせuser_idから情報を取り出し、if文にて送信先を変えたいですが、user_idから情報を取得できません。
発生している問題・エラーメッセージ
[1] pry(#<ContactMailer>)> @contact => #<Contact:0x00007f8278930678 id: 6, contact_user_name: "あ", contact_user_email: "aaa@aaa", contact_user_occupation: "ああ", contact_manufacturer: "あああ", contact_item_name: "ああああ", message: "あああああ", user_id: 1, created_at: Sat, 29 Jan 2022 02:10:24 UTC +00:00, updated_at: Sat, 29 Jan 2022 02:10:24 UTC +00:00> [2] pry(#<ContactMailer>)> user_id NameError: undefined local variable or method `user_id' for #<ContactMailer:0x00007f8279711a08>
該当のソースコード
class CreateContacts < ActiveRecord::Migration[6.0] def change create_table :contacts do |t| t.string :contact_user_name, null: false t.string :contact_user_email, null: false t.string :contact_user_occupation, null: false t.string :contact_manufacturer, null: false t.string :contact_item_name, null: false t.text :message t.references :user, foreign_key: true t.timestamps end end end
UserTB
create_table :users do |t| ## Database authenticatable t.string :email, null: false, default: "" t.string :encrypted_password, null: false, default: "" t.string :name, null: false t.string :name_ruby, null: false t.string :occupation, null: false t.string :position, null: false t.integer :page_select_id, null: false t.boolean :admin, default: false
ContactModel
class Contact < ApplicationRecord has_many :users, through: :user_contacts has_many :user_contacts with_options presence: true do validates :contact_user_name validates :contact_user_email validates :contact_user_occupation validates :contact_manufacturer validates :contact_item_name end end
MailerHtml
<%= form_with(model: contact, local: true) do |form| %> <% if contact.errors.any? %> <div id="error_explanation"> <h2><%= pluralize(contact.errors.count, "error") %> prohibited this contact from being saved:</h2> <ul> <% contact.errors.full_messages.each do |message| %> <li><%= message %></li> <% end %> </ul> </div> <% end %> <div class="field"> <%= form.label :'お名前' %> <%= form.text_field :current_user.name %> </div> <div class="field"> <%= form.label :'メールアドレス' %> <%= form.text_field :current_user.email %> </div> <div class="field"> <%= form.label :'店名' %> <%= form.text_field :current_user.occupation %> </div> <div class="field"> <%= form.label :'メーカー名' %> <%= form.text_field :email %> </div> <div class="field"> <%= form.label :'商品名' %> <%= form.text_field :email %> </div> <div class="field"> <%= form.label :'メッセージ' %> <%= form.text_area :content %> </div> <div class="actions"> <%= form.submit %> </div> <% end %>
contactMailer
class ContactMailer < ApplicationMailer def contact_mail(contact) @contact = contact binding.pry if contact.user.page_select_id == 1 mail to:"ktnstn.237rogs@gmail.com",subject: "サンプル依頼が届きました。" elsif contact.user.page_select_id == 2 mail to:"k-watanabe@net-nakayama.co.jp",subject: "成功" else mail to:"tessin1396@icloud.com",subject: "完璧!" end end end
アソシエーションの書き方、paramusのmargeには設定してあります。
よろしくお願い致します。
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
まだ回答がついていません
会員登録して回答してみよう