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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

Q&A

3回答

2371閲覧

Railsでメーラーを立ち上げる

T_Matsu

総合スコア8

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Ruby on Rails 4

Ruby on Rails4はRubyによって書かれたオープンソースのウェブフレームワークです。 Ruby on Railsは「設定より規約」の原則に従っており、効率的に作業を行うために再開発を行う必要をなくしてくれます。

0グッド

1クリップ

投稿2017/06/15 07:57

編集2017/06/15 08:54

###前提
お世話になります。
初めての質問投稿となりますので失礼がありましたら申し訳ありません。

//環境
Ruby Ver: ruby 2.3.0p0
Rails Ver: Rails 4.2.1

railsにて社内の営業報告を蓄積してくシステムを作成しています。

モデルは2つでUserモデル(営業社員)とNoteモデル(営業報告)があり、Userは複数のNoteを持っています。
入力フォームに入力していくことでNoteが作成され、他User作成のNoteを一覧表示したり、検索や詳細確認等が行えるようになっています。

###実現したいこと
User毎に個人ページがあり、個人ページには自分が作成したNoteを一覧表示させています。
一覧表示の横にチェックボックスを設け、チェックが入ったNoteをメールの本文に入れた状態でメーラーを立ち上げたいと考えています。

イメージ説明

// Note一覧をリストで表示 <li> // チェックボックス <%= f.check_box :id, { multiple: true, checked: note[:checked], disabled: note[:disabled], include_hidden: false,class: "noteSendCheck" }, note[:id]%> <%= image_for(note.user) %> <span class="user-name"> <%= link_to "案件ID:" + note.id.to_s, note_path(note.id) %> <%= note.user.name+"さん" %> </span> <span class="content"> <%= note.sales_company %> → <%= note.end_user %> </span> <span> 登録日:<%= note.created_at.strftime("%Y-%m-%d") %> </span> </li> // ここでチェックのついたNoteの中身を受け取って挿入した状態でメーラーを立ち上げる <%= mail_to 'All_user@example.com', 'メールを起動', subject: '@user.name', body: "", :class => "fa fa-envelope-o" %>

###モデル詳細 User & Note

# Userモデル class User < ActiveRecord::Base has_many :notes validates :name, presence: true validates :email, presence: true, uniqueness: true
# Noteモデル class Note < ActiveRecord::Base belongs_to :user validates :title, presence: true validates :content, presence: true validates :user_id, presence: true validates :sales_company, presence: true validates :end_user, presence: true validates :delivery_day, presence: true validates :status, presence: true validates :proposals, presence: true

###試したこと
Railsに標準搭載されているActionMailerを使って、UserがNoteを作成し保存した時点でメールを送信する機能は実装済みです。
メールの自動送信ではなく、Noteの内容を受け取ってメーラーを立ち上げるという機能を実装できずに困っています・・・。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gouf

2017/06/15 13:45

(実現できていない、)理想とする状態としては: 「『メールを起動リンク』をクリックすると、一覧でチェックを入れた案件(Note)の中身(content)が記入された状態でメーラーが立ち上がる」ということでしょうか
T_Matsu

2017/06/16 00:02

gouf様 ご連絡ありがとうございます。おっしゃる通りでございます。
guest

回答3

0

なるほどですね。

Ajaxを使わない方法でしたら
メール起動をformのsubmitボタンにして
post先のcontrollerで

body = '' @user.notes.each do |note| if チェックが入っているnoteだったら body += note.content end end redirect_to "mailto:info@example.com?subject=件名&amp;body=#{body}"

とするのはどうですかね?

投稿2017/06/16 01:10

mbk

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_Matsu

2017/06/16 04:04

mbk様 ご返信いただき、ありがとうございます。 「checkbox にcheckが入っていたら」の条件分岐を有効にするには、 チェックボックスの値になにかもたせる必要がありますか? その部分がうまく書けず、データが渡りません・・・。
mbk

2017/06/16 05:17

そうですね、どのnoteか特定できるものをidにするのが良いかと。
T_Matsu

2017/06/21 01:22

mbk様 お世話になっております。 ご返信いただいてからあれやこれやとやっていましたが、うまくいきません・・・。 質問① >どのnoteか特定できるものをidにするのが良いかと。 この部分の記述方法を詳しく教えていただけないでしょうか。 post先のコントローラーがUserのshowページなので下記のように記載しており、 ************************************************************************* def show @notes = @user.notes.order(updated_at: :desc).page(params[:page]).per(5)  @title = "さんの案件一覧" body = '' @user.notes.each do |note| if note.id? body += note.content end end redirect_to "mailto:info@example.com?subject=件名&amp;body=#{body}" end ************************************************************************* view側では上記しております「// Note一覧をリストで表示」と先頭にコメントの入ったソースで動かしています。
mbk

2017/06/21 21:58

<%= f.check_box :id, { multiple: true, checked: note[:checked], disabled: note[:disabled], include_hidden: false,class: "noteSendCheck" }, note[:id]%> これで生成されているHTMLを見せて頂けますか。 それといくつかチェックしてcontrollerに渡ってくるparamsもみたいです。 よろしくお願いします。
guest

0

失礼しました。しっかりコードを見てなかったです。

<%= mail_to 'All_user@example.com', 'メールを起動', subject: @user.name, body: @user.note.content, :class => "fa fa-envelope-o" %>

とするとどうですかね?

投稿2017/06/16 00:32

mbk

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_Matsu

2017/06/16 00:59

mbk様 body: @user.note.content では、NoMethodErrorになってしまいます。 Noteのなかには複数の情報が入っています。題名や客先情報、販売予定の製品情報等です。 Userは複数のNoteをもっているので、Noteの一覧表示されている中からチェックボックスで選択し、 選択されたNoteの中身をメール本文に挿入した状態でメーラーを立ち上げたいため、 body: ~ の部分にはチェックボックスでチェックされた情報を渡す必要があると思うのですが・・・ うまくいきません。
guest

0

<a href="mailto:info@example.com?subject=件名&amp;body=本文">メールを起動</a>

こんな感じのリンクを生成すればOKだと思います。

投稿2017/06/16 00:02

mbk

総合スコア130

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

T_Matsu

2017/06/16 00:28

mbk様 ご回答いただきありがとうございます。 メールを起動するリンクは正常に動作しているのですが、メールbody部分にNoteのContent(中身)を入れられず困っています。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

アカウントをお持ちの方は

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問