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

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

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

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

Ruby

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

Ruby on Rails

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

Q&A

1回答

1031閲覧

rails バリデーションでメッセージ出てくれません。

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails 5

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

Ruby

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

Ruby on Rails

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

0グッド

0クリップ

投稿2018/04/27 06:24

前提・実現したいこと

バリデーションでメッセージ出したいんですが、
出てくれません。お力貸してください。。

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

エラーは出てないですが、DBに登録できていないところから バリデートは効いているのではと思います。 が、メッセージ出てくれません。

Controller

class ClientsController < ApplicationController PER = 8 def index @clients = Client.page(params[:page]).per(PER) if params[:client_id].present? @client = Client.find(params[:client_id]) else @client = Client.new end @client.schedules.build @client.endusers.build end def create @client = Client.new(client_params) maxid = Client.maximum(:client_id).to_i @client.client_id = format("%05d", maxid + 1) if @client.save flash[:notice] = "クライアント登録が完了しました" redirect_to request.referer else flash[:error] = 'クライアント登録に失敗しました' redirect_to request.referer end end def update @clients = Client.all @client = @clients.find(params[:client_id]) if @client.update(client_params) flash[:notice] = "#{@client.client_name}を更新しました" redirect_to ("/clients/index") else redirect_to ("/clients/index") end end def destroy @client = Client.find(params[:client_id]) @client.del_flg = "1" @client.save flash[:error] = "#{@client.client_name}を削除しました" redirect_to ("/clients/index") end def clear redirect_to ("/clients/index") end private def client_params params.require(:client).permit(:client_id, :client_name, :client_tel) end end

###VIEW

<h1 class="page-title">クライアント管理<br> <!-- <% if flash[:notice] %> <p class="notice"><%= flash[:notice] %></p> <% else flash[:error] %> <p class="error"><%= flash[:error] %></p> <% end %> --> </h1> <div id="container"> <div id="nav"> <%= form_for @client do |f| %> <% if @client.errors.any? %> <% @client.errors.full_messages.each do |message| %> <%= message %> <% end %> <% end %> <div> <ul class="sidetable"> <div class="sidetable-contents"> <%= f.hidden_field :client_id, :disabled => true %> </div> <li class="sidetable-contents"> <%= f.label :client_name, "企業名", class: 'sidetable-label' %><br> <%= f.text_field :client_name %> </li> <li class="sidetable-contents"> <%= f.label :client_tel, "TEL('-'無し,10桁以上)", class: 'sidetable-label' %><br> <%= f.text_field :client_tel %> </li> <li class="client-btn-container"><%= f.submit "登録", class: "client_btn" %></li> <!-- <li class="client-btn-container"><%= link_to 'リセット', method: :clear, class: "client-clear-btn" %></li> --> </ul> </div> <% end %> </div> <div id="client-content"> <div class="client-inner"> <div></div> <table class="client-table"> <tr class="client-tr"> <th class="client-th client-id">id</th> <th class="client-th">企業名</th> <th class="client-th">電話番号</th> <th class="client-th client-th-brunk"></th> </tr> <tr class="client-th-brunk"></tr> <tbody class="client-tbody"> <% for client in @clients.select {|client| client.del_flg == nil } %> <tr class="client-tr"> <td class="client-td client-id"><%= client.client_id %></td> <td class="client-td"><%= client.client_name %></td> <td class="client-td"><%= client.client_tel %></td> <td class="client-td-btn"> <span class=""> <%= link_to '編集', clients_path(client_id: client.client_id), class: "client-table-btn client-table-btn-left" %> </span> <span class=""> <%= link_to '削除', (client), method: :delete, data: { confirm: '本当に削除しますか?' }, class: "client-table-btn client-table-btn-right" %> </span> </td> </tr> <% end %> <%= paginate @clients %> </tbody> </table> </div> </div> </div>

###MODEL

class Client < ApplicationRecord self.primary_key = "client_id" has_many :schedules has_many :endusers, dependent: :destroy accepts_nested_attributes_for :schedules, :endusers validates :client_name, presence: true validates :client_tel, presence: true, length: {minimum: 10, muximum: 11} end

試したこと

https://rails-study.net/validation/
このサイト参考にしてやってみたんですが、
メッセージが何も表示されません。

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

ruby 2.4.2p198 (2017-09-14 revision 59899) [x86_64-linux]
Rails 5.1.4
centos
MariaDB

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

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

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

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

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

gouf

2018/04/29 01:46

「<!-- <% if flash[:notice]」のコメントアウト部分(<!-- -->)を外した場合に何か変化は見られますか? (Web ブラウザの開発者ツールで Rails が出力したあとのHTML ソースコードについても確認してみてください)
space-hippy

2018/05/16 08:52

flash[:error] = 'クライアント登録に失敗しました' redirect_to request.referer とありますが、こちらのリダイレクトは思ったと売りの動作ですか?
guest

回答1

0

バリデーションエラー時にリダイレクトさせてしまっているのでインスタンスの内容が失われてしまっています。
renderを使いましょう。

def create @client = Client.new(client_params) maxid = Client.maximum(:client_id).to_i @client.client_id = format("%05d", maxid + 1) if @client.save flash[:notice] = "クライアント登録が完了しました" redirect_to request.referer else flash[:error] = 'クライアント登録に失敗しました' render :index end end

投稿2019/03/19 21:07

ykp_yk

総合スコア654

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問