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

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

ただいまの
回答率

90.86%

  • Ruby

    6541questions

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

  • Ruby on Rails

    6373questions

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

  • Ruby on Rails 5

    941questions

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

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 60
退会済みユーザー

退会済みユーザー

 前提・実現したいこと

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

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

エラーは出てないですが、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

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

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正の依頼

  • gouf

    2018/04/29 10:46

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

    キャンセル

  • space-hippy

    2018/05/16 17:52

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

    キャンセル

まだ回答がついていません

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

  • ただいまの回答率 90.86%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る

  • Ruby

    6541questions

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

  • Ruby on Rails

    6373questions

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

  • Ruby on Rails 5

    941questions