🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Ruby on Rails

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

Q&A

解決済

3回答

547閲覧

データベースに情報が送信されない

tsurugiyaru

総合スコア4

Ruby on Rails

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

0グッド

0クリップ

投稿2021/01/02 11:51

編集2021/01/02 12:37

データベースに情報が送信されません

rails on rubyを使い、投稿フォームに入力した情報をデータベースに送り、
そのデータが保存されれば一覧ページにうつり、
保存されなければ投稿フォームを繰り返すというページを作っています。

投稿フォームから送信ボタンを押しても、データが送信されず
投稿フォームに戻ってしまいます。
入力内容がちゃんとデータベースに送られ、
それを表示できるようにしたいです。

発生している問題・エラーメッセージ

エラーメッセージは出ていないのですが、
rails c で確認したところデータベースにも情報は入っていませんでした。

該当のソースコード

view

1<h1>コート新規投稿</h1> 2<%= link_to "コート一覧に戻る", coats_path %> 3 4 5<div class="post-container"> 6 <p class="title">投稿フォーム</p> 7 <%= form_for(@coat, :url => { controller:'coats', action:'create'})do |f| %> 8 <%= f.label :コート名 %> 9 <%= f.text_field :name,size: 140%> 10 <br> 11 <div class="image"> 12 <%= f.label :image %> 13 <%= f.file_field :image %> 14 </div> 15 <%= f.label :住所 %> 16 <%= f.text_field :address,size: 140%> 17 <br> 18 <%= f.label :詳細 %> 19 <%= f.text_field :body,size: 140%> 20 <br> 21 <%= f.label :リンク %> 22 <%= f.text_field :url,size: 140%> 23 <br> 24 <%= f.submit "送信"%> 25 <br> 26 <% end %> 27</div>

controller

1class CoatsController < ApplicationController 2 3 before_action :authenticate_user! 4 5 def index 6 if params[:search] == nil 7 @coats= Coat.all 8 elsif params[:search] == '' 9 @coats= Coat.all 10 else 11 #部分検索 12 @coats = Coat.where("body LIKE ? ",'%' + params[:search] + '%') 13 end 14 end 15 16 def new 17 @coat = Coat.new 18 end 19 20 def create 21 @coat = Coat.new(coat_params) 22 #coat.user_id = current_user.id エラーが出たのでいったん忘れないように仮置きしています 23 if @coat.save 24 redirect_to :action => "index" 25 else 26 redirect_to :action => "new" 27 end 28 end 29 30...省略... 31 32private 33 def coat_params 34 params.require(:coat).permit(:name, :address, :url, :body, :image) 35 end 36end 37

migrate

1class CreateCoats < ActiveRecord::Migration[6.0] 2 def change 3 create_table :coats do |t| 4 t.string :name 5 t.string :address 6 t.text :body 7 t.string :url 8 t.boolean :display 9 10 t.timestamps 11 end 12 end 13end

railsroutes

1 Prefix Verb URI Pattern Controller#Action 2 new_user_session GET /users/sign_in(.:format) devise/sessions#new 3 user_session POST /users/sign_in(.:format) devise/sessions#create 4 destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy 5 new_user_password GET /users/password/new(.:format) devise/passwords#new 6 edit_user_password GET /users/password/edit(.:format) devise/passwords#edit 7 user_password PATCH /users/password(.:format) devise/passwords#update 8 PUT /users/password(.:format) devise/passwords#update 9 POST /users/password(.:format) devise/passwords#create 10 cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel 11 new_user_registration GET /users/sign_up(.:format) devise/registrations#new 12 edit_user_registration GET /users/edit(.:format) devise/registrations#edit 13 user_registration PATCH /users(.:format) devise/registrations#update 14 PUT /users(.:format) devise/registrations#update 15 DELETE /users(.:format) devise/registrations#destroy 16 POST /users(.:format) devise/registrations#create 17 user GET /users/:id(.:format) users#show 18 coat_likes POST /coats/:coat_id/likes(.:format) likes#create 19 coat_like DELETE /coats/:coat_id/likes/:id(.:format) likes#destroy 20 coats GET /coats(.:format) coats#index 21 POST /coats(.:format) coats#create 22 new_coat GET /coats/new(.:format) coats#new 23 edit_coat GET /coats/:id/edit(.:format) coats#edit 24 coat GET /coats/:id(.:format) coats#show 25 PATCH /coats/:id(.:format) coats#update 26 PUT /coats/:id(.:format) coats#update 27 DELETE /coats/:id(.:format) coats#destroy 28 users GET /users(.:format) users#index 29 POST /users(.:format) users#create 30 new_user GET /users/new(.:format) users#new 31 edit_user GET /users/:id/edit(.:format) users#edit 32 GET /users/:id(.:format) users#show 33 PATCH /users/:id(.:format) users#update 34 PUT /users/:id(.:format) users#update 35 DELETE /users/:id(.:format) users#destroy 36 statics GET /statics(.:format) statics#index 37 POST /statics(.:format) statics#create 38 new_static GET /statics/new(.:format) statics#new 39 edit_static GET /statics/:id/edit(.:format) statics#edit 40 static GET /statics/:id(.:format) statics#show 41 PATCH /statics/:id(.:format) statics#update 42 PUT /statics/:id(.:format) statics#update 43 DELETE /statics/:id(.:format) statics#destroy 44 root GET / coats#index

補足情報(FW/ツールのバージョンなど)

似たようなほかのアプリ(自分で作ったもの)からほとんどコピペしたものです

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

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

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

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

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

siruku6

2021/01/02 12:08

データが登録されない問題はmodelにかけられているvalidationが原因である場合や、routingがおかしい場合もあるので、それらの内容についても共有してあると原因が突き止めやすくなるかと思います。 ちなみに、routingについては、routes.rbをそのまま貼り付けるよりも、`rails routes`というコマンドを実行した結果の方が内容が理解しやすいものになります。
guest

回答3

0

エラーメッセージがないのは、viewにそれを表示するようにしていないからです。
if @coat.save を一時的に if @coat.save! にしてエラー内容を確認すると良いでしょう

投稿2021/01/03 12:21

winterboum

総合スコア23567

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

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

tsurugiyaru

2021/01/04 06:51

if @coat.save!にすることでエラー内容は確認できました! しかし、ほかにも多くの不備が見つかったため、一度最初からやり直そうと思います。 回答の方本当にありがとうございました。
guest

0

多くの不備が見つかったため最初からやり直そうと思います、助言くださった方々、ありがとうございました。

投稿2021/01/04 07:05

tsurugiyaru

総合スコア4

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

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

0

自己解決

多くの不備が見つかったため最初からやり直そうと思います、助言くださった方々、ありがとうございました。

投稿2021/01/04 06:52

tsurugiyaru

総合スコア4

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問