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

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

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

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

Ruby on Rails

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

Q&A

解決済

3回答

3260閲覧

Ruby on Railsでお問い合わせフォームを作っているが内容がDBに保存されないです。

YosukeHomma

総合スコア17

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2015/12/31 03:41

Rails初心者です。お問い合わせフォームを作っておりまして、一度ちゃんと入力した内容がデータベースに保存されるところまでできたのですが、いじっているうちに、controllerのcreateメソッドが反応しなくなってしまいました。controllerのcreateメソッドの中でbinding.pryをしてもそもそもそこまで到達しないです。尚、Railsのエラー画面はでません。どこに問題がありそうか、ご回答頂けますと幸いです。

config/routes.rb

Ruby

1Rails.application.routes.draw do 2 root 'top#index' 3 get 'company' => 'top#company' 4 get 'privacypolicy' => 'top#privacypolicy' 5 resources(:contacts) 6 get 'contact' => 'contacts#index' 7 post 'contact' => 'contacts#create' 8end

app/controllers/contacts_controller.rb

Ruby

1class ContactsController < ApplicationController 2 def index 3 @contact = Contact.new 4 end 5 6 def create 7 Contact.new(contact_params) 8 binding.pry 9 MailSender.inquiry(@contact).deliver 10 @contact.save 11 end 12 13 private 14 def contact_params 15 params.require(:contact).permit(:name, :email, :phone, :message) 16 end 17end

app/views/contacts/index.html.erb

HTML

1<section id="contact"> 2 <div class="container"> 3 <div class="row"> 4 <div class="col-lg-12 text-center"> 5 <h2 class="section-heading">Contact Us</h2> 6 <h3 class="section-subheading text-muted">Lorem ipsum dolor sit amet consectetur.</h3> 7 </div> 8 </div> 9 <div class="row"> 10 <div class="col-lg-12"> 11 <%= form_for @contact, html: {name: 'sentMessage', id: 'contactForm'} do |f| %> 12 <div class="row"> 13 <div class="col-md-6"> 14 <div class="form-group"> 15 <%= f.text_field :name, class: 'form-control', placeholder: 'Your Name *', id: 'name', 'data-validation-required-message' => 'Please enter your name.' %> 16 <p class="help-block text-danger"></p> 17 </div> 18 <div class="form-group"> 19 <%= f.text_field :email, class: 'form-control', placeholder: 'Your Email *', id: 'email', 'data-validation-required-message' => 'Please enter your email address.' %> 20 <p class="help-block text-danger"></p> 21 </div> 22 <div class="form-group"> 23 <%= f.text_field :phone, class: 'form-control', placeholder: 'Your Phone *', id: 'phone', 'data-validation-required-message' => 'Please enter phone nmber.' %> 24 <p class="help-block text-danger"></p> 25 </div> 26 </div> 27 <div class="col-md-6"> 28 <div class="form-group"> 29 <%= f.text_area :message, class: 'form-control', placeholder: 'Your Message *', id: 'message', 'data-validation-required-message' => 'Please enter a message.' %> 30 <p class="help-block text-danger"></p> 31 </div> 32 </div> 33 <div class="clearfix"></div> 34 <div class="col-lg-12 text-center"> 35 <div id="success"></div> 36 <%= f.submit(['SEND MESSAGE'], class: 'btn btn-xl') %> 37 </div> 38 </div> 39 <% end %> 40 </div> 41 </div> 42 </div> 43</section>

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

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

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

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

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

guest

回答3

0

自己解決

別でJSファイルが動いていて、それが動作の阻害をしておりました。

投稿2015/12/31 06:54

YosukeHomma

総合スコア17

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

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

0

create() を次のようにしてみては?
(mail 送信はコメントアウトしてみる。save! にして例外が発生するようにする)

ruby

1 def create 2 @contact = Contact.new(contact_params) 3 binding.pry 4 # MailSender.inquiry(@contact).deliver 5 @contact.save! 6 end

binding.pry でブレークしなければ、routes.rb の見直しが必要です。
その場合、rake routes の出力結果が知りたいです。

投稿2015/12/31 05:35

katoy

総合スコア22324

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

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

YosukeHomma

2015/12/31 06:55

ご回答ありがとうございました。別のJSファイルが動作の阻害をしておりました。
guest

0

受け取ったインスタンスを変数に格納する必要があると思います。

@contact = Contact.new(contact_params)

投稿2015/12/31 05:24

miyamiya

総合スコア691

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

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

YosukeHomma

2015/12/31 05:27

ご回答ありがとうございます。 修正しました。 依然として、DBに保存されないのですが、他にも原因は考えられますでしょうか。
miyamiya

2015/12/31 05:33

create methodが呼ばれていないかもしれません。 ``` post 'contact' => 'contacts#create' ``` は使われていないようなので削除してみてはどうでしょうか
YosukeHomma

2015/12/31 06:55

ご回答ありがとうございました。別のJSファイルが動作の阻害をしておりました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問