前提・実現したいこと
rails,ruby,haml,sass,javascript,jqueryでフリマアプリを作成しています。
新規登録で生年月日を入力する欄で今まではtext_fieldで生年月日を直接入力する方法を行っていましたが、
閏年も選択できるプルダウンに変更しようと思い挑戦したところ、画面上には表示出来るところまでは
出来たのですが、その選択した生年月日がDBに保存されない状況になっています。
text_fieldの時のように、しっかりDBに保存される状態を実現したいと思っています。
発生している問題・エラーメッセージ
新規登録画面の生年月日のプルダウンは画面には表示され選択出来るがDBに保存されない問題が発生しています。
該当のソースコード
haml
1.user-register 2 .header51 3 = image_tag asset_path("logo.png"), size: "200x50", alt: "test" 4 5 .main 6 .title 7 .title__font 8 会員情報入力 9 10 = form_for(@user, url: user_registration_path) do |f| 11 = render "devise/shared/error_messages", resource: @user 12 13 .name-information 14 .name-information__item 15 .name-information__item__nicname 16 = f.label :nickname,"ニックネーム" 17 .name-information__item__required 18 必須 19 .name-information__name 20 = f.text_field :nickname,size:26 21 .email 22 .email__information 23 .email__information__address 24 = f.label :email,"メールアドレス" 25 .email__information__required 26 必須 27 .email__information 28 = f.email_field :email, autofocus: true, autocomplete: "email",size:26 29 30 .password 31 .password__item 32 .password__item__pass 33 = f.label :password,"パスワード" 34 .password__item__note 35 - if @minimum_password_length 36 (#{@minimum_password_length} 文字以上必要です) 37 .password__item__required 38 必須 39 .password__input 40 .password__description 41 = f.password_field :password, autocomplete: "new-password", size:26 42 43 .re-enter 44 .re-enter__item 45 .re-enter__item__pass 46 = f.label :password_confirmation,"確認用パスワード " 47 .re-enter__item__repuired 48 必須 49 .re-enter__itempass 50 = f.password_field :password_confirmation, autocomplete: "new-password",size:26 51 52 .Identification 53 .Identification__mozi 54 本人確認 55 .Identification__description 56 安心・安全にご利用いただくために、お客さまの本人情報の登録にご協力ください。他のお客さまに公開されることはありません。 57 58 .Identification-name 59 .Identification-name__box 60 .Identification-name__box__mozi 61 .Identification-name__box__mozi__oo 62 = f.label :family_name,"お名前(姓)" 63 .Identification-name__box__mozi__tt 64 必須 65 .Identification-name__box__nameinput 66 = f.text_field :family_name, size:15 67 .Identification-name__boxs 68 .Identification-name__boxs__a1 69 .Identification-name__boxs__a1__nn 70 = f.label :first_name,"お名前(名)" 71 .Identification-name__boxs__a1__mm 72 必須 73 .Identification-name__boxs__a2 74 = f.text_field :first_name, size:15 75 76 .Identification-name-kana 77 .Identification-name-kana__box 78 .Identification-name-kana__box__mozi 79 .Identification-name-kana__box__mozi__kiss 80 = f.label :family_name_kana,"お名前(セイ)" 81 .Identification-name-kana__box__mozi__pen 82 必須 83 .Identification-name-kana__box__hissu 84 = f.text_field :family_name_kana, size:15 85 .Identification-name-kana__boxs 86 .Identification-name-kana__boxs__b1 87 .Identification-name-kana__boxs__b1__pc 88 = f.label :first_name_kana,"お名前(メイ)" 89 .Identification-name-kana__boxs__b1__ice 90 必須 91 .Identification-name-kana__boxs__b2 92 = f.text_field :first_name_kana, size:15 93 94 .Birthday 95 .Birthday__box1 96 .Birthday__box1__mozi 97 生年月日 98 .Birthday__box1__hissu 99 必須 100 .Birthday__box2 101 .Birthday__box2__a 102 %select#birth_year 103 %option{:value => "0"} ---- 104 年 105 %select#birth_month 106 %option{:value => "0"} -- 107 月 108 %select#birth_day 109 %option{:value => "0"} -- 110 日 111 112 113 -# .Birthday__box2__a__1po 114 -# = f.text_field :birth_year, size:8, maxlength:4 115 -# .Birthday__box2__a__year 116 -# = f.label :birth_year,"年" 117 -# .Birthday__box2__b 118 -# .Birthday__box2__b__2po 119 -# = f.text_field :birth_month, size:7, maxlength:2 120 -# .Birthday__box2__b__month 121 -# = f.label :birth_month,"月" 122 -# .Birthday__box2__c 123 -# .Birthday__box2__c__3po 124 -# = f.text_field :birth_day, size:7, maxlength:2 125 -# .Birthday__box2__c__day 126 -# = f.label :birth_day,"日" 127 128 .Birthday__box3 129 ※ 本人情報は正しく入力してください。会員登録後、修正するにはお時間を頂く場合があります。 130 131 .terms-of-service 132 .terms-of-service__mozi 133 「次へ進む」のボタンを押すことにより、利用規約に 134 同意したものとみなします 135 .terms-of-service__btm 136 %input#submit_button1{:name => "submit", :type => "submit", :value => "次へ進む"}/ 137 .terms-of-service__register 138 本人情報の登録について> 139 .terms-of-service__english 140 This site is protected by reCAPTCHA and the Google PrivacyPolicy and Terms of Service apply. 141 142 .footer51 143 .title 144 .title__one 145 プライバシーポリシー 146 .title__tow 147 メルカリ利用規約 148 .title__three 149 特定商取引に関する表記 150 .item51 151 = image_tag asset_path("logo-white.png"), size: "200x60", alt: "test" 152 .logo51 153 © FURIMA, Inc. 154
javascript
1$(function() { 2 var time = new Date(); 3 var year = time.getFullYear(); 4 var month = time.getMonth() + 1; 5 var day = time.getDate(); 6 7 var selected_year = document.getElementById("birth_year").value; 8 var selected_month = document.getElementById("birth_month").value; 9 10 for (var i = year; i >= 1 ; i--) { 11 $('#birth_year').append('<option value="' + i + '">' + i + '</option>'); 12 } 13 14 for (var j = 1; j <= 12; j++) { 15 $('#birth_month').append('<option value="' + j + '">' + j + '</option>'); 16 } 17 18 for (var k = 1; k <= 31; k++) { 19 $('#birth_day').append('<option value="' + k + '">' + k + '</option>'); 20 } 21 22 $('#birth_year').change(function() { 23 selected_year = $('#birth_year').val(); 24 25 var last_month = 12; 26 if (selected_year == year) { 27 last_month = month; 28 } 29 $('#birth_month').children('option').remove(); 30 $('#birth_month').append('<option value="' + 0 + '">--</option>'); 31 for (var n = 1; n <= last_month; n++) { 32 $('#birth_month').append('<option value="' + n + '">' + n + '</option>'); 33 } 34 }); 35 36 $('#birth_year,#birth_month').change(function() { 37 selected_year = $('#birth_year').val(); 38 selected_month = $('#birth_month').val(); 39 40 if (selected_year == year && selected_month == month ) { 41 var last_day = day; 42 }else{ 43 if (selected_month == 2) { 44 if((Math.floor(selected_year%4 == 0)) && (Math.floor(selected_year%100 != 0)) || (Math.floor(selected_year%400 == 0))){ 45 last_day = 29; 46 }else{ 47 last_day = 28; 48 } 49 50 }else if(selected_month == 4 || selected_month == 6 || selected_month == 9 || selected_month == 11 ){ 51 last_day = 30; 52 53 }else{ 54 last_day = 31; 55 } 56 } 57 58 $('#birth_day').children('option').remove(); 59 $('#birth_day').append('<option value="' + 0 + '">--</option>'); 60 for (var m = 1; m <= last_day; m++) { 61 $('#birth_day').append('<option value="' + m + '">' + m + '</option>'); 62 } 63 }); 64});
試したこと
・仮説1
hamlのselectの記載がおかしいのではないか
・実行
selectの記載をfrom_forの記述に変更
・結果
変更前と変わらずDBに保存されない
・仮説2
スペルミスがあるのではないか
・実行
全てのスペルの確認
・結果
問題なし
補足情報(FW/ツールのバージョンなど)
保存先のテーブルのカラム名は月がbirth_year月がbirth_month日がbirth_dayです。
あなたの回答
tips
プレビュー