質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
87.20%
Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

解決済

Acrtion Mailerにてメール送信をしたい。その際に所属ごとに送信先を変更したいのでuser_idから情報を取得したいがどうすればできますか?

kenta34344
kenta34344

総合スコア5

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

1回答

0評価

0クリップ

136閲覧

投稿2022/01/29 02:31

前提・実現したいこと

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/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

良い質問の評価を上げる

以下のような質問は評価を上げましょう

  • 質問内容が明確
  • 自分も答えを知りたい
  • 質問者以外のユーザにも役立つ

評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

気になる質問をクリップする

クリップした質問は、後からいつでもマイページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

  • プログラミングに関係のない質問
  • やってほしいことだけを記載した丸投げの質問
  • 問題・課題が含まれていない質問
  • 意図的に内容が抹消された質問
  • 過去に投稿した質問と同じ内容の質問
  • 広告と受け取られるような投稿

評価を下げると、トップページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

まだ回答がついていません

会員登録して回答してみよう

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
87.20%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問

同じタグがついた質問を見る

Ruby on Rails 6

Ruby on Rails 6は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。