前提・実現したいこと
社内で使うPDFなどのファイル名で、下記の様な感じで文字数制限、半角/全角などを統一したいと思い
文字チェックアプリなる物を作りました。
作成日 + ファイル名13文字
20200321 会議の報告書 営業
←作成日→ ← 13文字 →
発生している問題・エラーメッセージ
ファイル名 + 部署名 で13文字になるように作っていたのですが
部署名を抜いてファイル名を作る方も居て
その方からは「部署名抜きで13文字が良い」との案が有り
変更しようと考えています
該当のソースコード
Model
1class Check < ApplicationRecord 2 validates :datenen, presence: true 3 validates :dategatu, presence: true 4 validates :datehi, presence: true 5 validates :title, presence: true, length: {maximum:11}, format: { with: /\A[^ァ-ン゙゚ 0-9]+\z/ } 6 validates :department, presence: true 7end
View
View
1<h1>下記に入力してください</h1> 2 3 <%= form_with(model: @check, local: true) do |f| %> 4 <% if @check.errors.any? %> 5 <div id="error_explanation"> 6 <ul> 7 <% @check.errors.full_messages.each do |msg| %> 8 <li><%= msg %></li> 9 <% end %> 10 </ul> 11 </div> 12 <% end %> 13 14 <div class="form-group"> 15 <%= f.label :date, '西暦年月日' %> 16 <%= f.select :datenen, [["2020", "2020"], ["2021", "2021"]], :prompt => "年" %> 17 <%= f.select :dategatu, [["01", "01"],["02", "02"],["03", "03"],["04", "04"],["05", "05"],["06", "06"],["07", "07"],["08", "08"],["09", "09"],["10", "10"],["11", "11"],["12", "12"]], :prompt => "月" %> 18 <%= f.select :datehi, [["01", "01"],["02", "02"],["03", "03"],["04", "04"],["05", "05"],["06", "06"],["07", "07"],["08", "08"],["09", "09"],["10", "10"],["11", "11"],["12", "12"],["13", "13"],["14", "14"],["15", "15"],["16", "16"],["17", "17"],["18", "18"],["19", "19"],["20", "20"],["21", "21"],["22", "22"],["23", "23"],["24", "24"],["25", "25"],["26", "26"],["27", "27"],["28", "28"],["29", "29"],["30", "30"],["31", "31"]], :prompt => "日" %> 19 </div> 20 21 <div class="form-group"> 22 <%= f.label :title, 'タイトル' %> 23 <%= f.text_field :title, size:"23" %> 24 </div> 25 26 <div class="form-group"> 27 <%= f.label :department, '部署' %> 28 <%= f.select :department, [["営業", "営業"],["業務", "業務"], ["経企", "経企"], ["事長", "事長"], ["庶務", "庶務"], ["情処", "情処"], ["人事", "人事"], ["総務", "総務"]], :prompt => "部署名" %> 29 </div> 30 31 <%= f.submit '作成' %> 32 <% end %> 33 34<p class="text-center"><%= link_to 'TOPに戻る', root_path %></p>
show
1<h2>ファイル名が作成されました</h2> 2<%= link_to '修正する', edit_check_path(@check) %> 3<% mozi = @check.datenen + @check.dategatu + @check.datehi + ' ' + @check.title + ' ' + @check.department %> 4<!-- コピー対象要素とコピーボタン --> 5<h4> 6 <div class="container-fluid mx-0"> 7 <div class="form-group row"> 8 <input class="border border-info rounded text-secondary form-control-plaintext col-10" id="omakeCopyTarget" type="text" value="<%= mozi %>" readonly> 9 <button type="button" class="btn btn-info col" onclick="omakeCopyToClipboard()" data-toggle="tooltip" data-placement="top" title="コピーする"> 10 <i class="fas fa-clipboard"></i> 11 </button> 12 </div> 13 </div> 14</h4> 15<script> 16 function omakeCopyToClipboard() { 17 // コピー対象をJavaScript上で変数として定義する 18 var copyTarget = document.getElementById("omakeCopyTarget"); 19 // コピー対象のテキストを選択する 20 copyTarget.select(); 21 // 選択しているテキストをクリップボードにコピーする 22 document.execCommand("Copy"); 23 // コピーをお知らせする 24 alert("コピーできました! : " + copyTarget.value); 25 } 26</script> 27<p class="text-center"><%= link_to 'TOPに戻る', root_path %></p> 28
試したこと
バリデーションで
validates :title, presence: true, length: {maximum:11}, format: { with: /\A[^ァ-ン゙゚ 0-9]+\z/ }
validates :department, presence: true
としていた所から
title の文字数を13に変え
validates :department, presence: true
をけし、入力してもしなくても良いようにしたのですが
それではぬしょ名を入れた時に文字数がオーバーしてしまうので
出来れば title と department を合わせた文字数で制限をかけたいと思うのですが
調べても方法が見つかりません。
良い方法を知っている方がいましたら教えていただけると幸いです。
補足情報(FW/ツールのバージョンなど)
開発環境
AWS9
Rails5.2.4.1
プログラミング歴
6ヶ月
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/03/24 04:25