validateエラーメッセージが表示できなくなりました。
必須項目を空のままsubmitすると何もおきません。
validateの条件通りに正しく入力すればその先は意図通りに動作します。
create
アクションでrender 'new'
のかわりにrender plain: errors.inspect
をためしたところエラーの内容が表示されず、画面は遷移せず何もおきませんでした。
以前はnew画面でエラーメッセージの表示もできていました。
deviseの導入作業をし終えて気がついたら上記の状態になっていました。
==環境==
ruby 2.5.3p105
rails 5.2.2
==主なコード==
アプリ名: Myapp
モデル名: Article
app/controllers/articles_controller.rb
ruby
1class ArticlesController < ApplicationController 2 before_action :authenticate_user!, only: [:new, :create, :edit, :update, :destroy] 3 4 def index 5 @articles = Article.all.order(updated_at: 'desc').limit(2) 6 end 7 8 def show 9 @article = Article.find(params[:id]) 10 end 11 12 def new 13 @article = Article.new 14 end 15 16 def create 17 @article = current_user.articles.new(article_params) 18 19 if @article.save 20 redirect_to articles_path 21 else 22 render plain: @article.errors.inspect 23 24 #@article = Article.new(article_params) 25 #render 'new' 26 end 27 end 28 29 def edit 30 @article = Article.find(params[:id]) 31 unless @article.user_id == current_user.id 32 redirect_to articles_path 33 end 34 end 35 36 def update 37 @article = Article.find(params[:id]) 38 if @article.update(article_params) 39 redirect_to articles_path 40 else 41 render 'edit' 42 end 43 end 44 45 def destroy 46 @article = Article.find(params[:id]) 47 if @article.user_id == current_user.id 48 @article.destroy 49 redirect_to articles_path 50 else 51 redirect_to articles_path 52 end 53 end 54 55 private 56 def article_params 57 params.require(:article).permit(:title, :result) 58 end 59end
app/models/article.rb
ruby
1class Article < ApplicationRecord 2 validates :title, presence: true 3 4 belongs_to :user 5end
config/application.rb
ruby
1require_relative 'boot' 2require 'rails/all' 3 4Bundler.require(*Rails.groups) 5 6module Myapp 7 class Application < Rails::Application 8 config.load_defaults 5.2 9 config.i18n.default_locale = :ja 10 end 11end
==追記==
下記を試しました。
createアクションの条件分岐を下記のように書き換えnew.html.erbに<p><%= @article.errors.size %></p>
を追記して、必須項目を空白のままsubmitしたにもかかわらず0
が返ってきました。
ruby
1 if @article.save 2 redirect_to articles_path 3 else 4 #render plain: @article.errors.inspect 5 6 @article = Article.new(article_params) 7 render 'new' 8 end
==追記 2019/01/15==
下記を試しました。
createアクションの条件分岐を書き換え、saveされないときに、redirect_to new_article_path
としたらページ遷移してnewページのトップ位置に戻るようになりましたがエラーメッセージは取得できませんでした。
これだとnewページのトップに遷移するがエラーメッセージは取得できない
ruby
1 if @article.save 2 redirect_to articles_path 3 else 4 #render plain: @article.errors.inspect 5 6 @article = Article.new(article_params) 7 redirect_to new_article 8 end
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。