前提・実現したいこと
バリデーションでメッセージ出したいんですが、
出てくれません。お力貸してください。。
発生している問題・エラーメッセージ
エラーは出てないですが、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