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

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

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

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

Ruby on Rails 6

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

Q&A

解決済

1回答

265閲覧

Ruby エラーメッセージが表示されない不可解な現象を解決してほしいです。validatetionもかけてエラー文も設定して、viewで呼び起こしているのになぜ??

ryuya1204

総合スコア12

Ruby

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

Ruby on Rails 6

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

0グッド

1クリップ

投稿2020/10/22 03:06

#解決したいこと
newアクションで値を送信して、正常な値でなければエラーメッセージが表示されるようにしたいです。
方法として、共通のテンプレートを使用しております。
それに、newアクションで投稿した情報がcreateアクションでIDだけ保存されないという現象も発生しておりました。それは、otional: trueで解決できました。おそらく今回のものには関係ないかと思うのですが…

以下が、今回使用している関係があるかと思われるコードになります。

#コード

share/_errors.message.html.erb

<% if @training.errors.any? %> <div class="error-alert"> <ul> <% model.errors.full_messages.each do |message| %> <li class='error-message'><%= message %></li> <% end %> </ul> </div> <% end %>

trainings/new.html.erb

<h1>練習内容</h1> <div class="parent"> <%= form_with model: @training, id: 'new_training', class: 'new_training',local: true do |f| %> <%= render 'share/error_messages', model: f.object %> <div class="field"> <%= f.label :日付を選択, class: 'date_lavel' %><br> <%= f.date_field :date, class: 'select_date' %> </div> <div class="field"> <%= f.label :"練習メニュー" %> <br> <%= f.text_area :training_menu, autofocus: true, class: "training_menu" %> </div> <div class="field"> <%= f.label :"目的" %><br> <%= f.text_area :purpose, autofocus: true, class: "purpose" %> </div> <div class="field"> <%= f.label :"反省" %><br> <%= f.text_area :introspection, autofocus: true, class: "introspection" %> </div> <div class="register_actions"> <div class="actions"> <%= f.submit "登録", class: "register_btn" %> </div> </div> <% end %> </div>

trainings_controller

class TrainingsController < ApplicationController before_action :comment_set, only: [:edit, :show] def new @training = Training.new end def create @training = Training.create(training_params) if @training.save redirect_to '/' else redirect_to request.referer end end def update @training = Training.find(params[:id]) @training.update(update_training_params) end def destroy training = Training.find(params[:id]) if training.user_id == current_user.id training.destroy redirect_to '/' end end private def training_params params.require(:training).permit(:date, :training_menu, :purpose, :introspection).merge(user_id: current_user.id) end def update_training_params params.require(:training).permit(:date, :training_menu, :purpose, :introspection).merge(user_id: current_user.id) end def comment_set @training = Training.find(params[:id]) @comment = Comment.new @comments = @training.comments.includes(:user) end end

trainings.rb

class Training < ApplicationRecord belongs_to :user belongs_to :calendar, optional: true has_many :comments validates :training_menu, presence: true validates :date, presence: true validates :purpose, presence: true end

マイグレーションファイル

class CreateTrainings < ActiveRecord::Migration[6.0] def change create_table :trainings do |t| t.date :date , null: false t.text :training_menu , null: false t.text :purpose , null: false t.text :introspection t.references :user , foreign_key: true t.timestamps end end end

以上になります。

大変お手数おかけしますがご確認よろしくお願いいたします。

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

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

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

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

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

guest

回答1

0

ベストアンサー

def create @training = Training.create(training_params) if @training.save redirect_to '/' else - redirect_to request.referer + render :new # end end

参考になるかも:https://qiita.com/S-U-G-I/items/ce642e517a61315a99fe

投稿2020/10/22 04:00

no1knows

総合スコア3365

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

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

ryuya1204

2020/10/22 05:08

ご回答ありがとうございます! 無事解決しました。そうか、redirect_toは値の更新になりますもんね???? 非常に勉強になりました!ありがとうございます!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

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

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

質問する

関連した質問