前提・実現したいこと
現在、Ruby on Rails でアプリ開発中ですが、sessionを使用したユーザー登録実装にて、日付(date_selectフォーム)の値がsessionに入らない状況です。
該当のソースコード
- 該当hamlファイル
※下記記述の下の方にある「!= sprintf(f.date_select(:birthday, prefix:'birthday', 〜〜〜」が該当のdate_selectフォーム記述箇所です。
%h2 会員情報入力フォーム = form_for(@user, url: performance_path) do |f| = render "devise/shared/error_messages", resource: @user .name .name__title お名前(全角) .name__required 必須 = f.text_field :name, autofocus: true, autocomplete: "name", placeholder: "例)山田太郎" ,class: 'name-form' .name_kana .name_kana__title お名前カナ(全角) .name_kana__required 必須 = f.text_field :name_kana, autofocus: true, autocomplete: "name_kana", placeholder: "例)ヤマダタロウ" ,class: 'name_kana-form' .email .email__title メールアドレス .email__required 必須 = f.email_field :email, autocomplete: "email", placeholder: "PC・携帯どちらでも可" .password .password__title パスワード(半角英数字) .password__required 必須 = f.password_field :password, autocomplete: "new-password", placeholder: "6文字以上の半角英数字" .tel .tel__title 携帯電話の番号 .tel__required 必須 = f.text_field :tel, autofocus: true, autocomplete: "tel", placeholder: "携帯電話の番号を入力" .birthday .birthday__title 生年月日 .birthday__required 必須 .birthday__select-form != sprintf(f.date_select(:birthday, prefix:'user', with_css_classes:'XXXXX', prompt:"--", use_month_numbers:true, start_year:Time.now.year, end_year:1900, date_separator:'%s'),'年','月')+'日' .status .status__title 会員情報の公開設定 .status__required 必須 .status__select-form = f.select :status, User.statuses.keys, {promt: "---"} .actions = f.submit "次へ"
- registrations_controller.rb
def new @user = User.new end def performance @user = User.new(sign_up_params) session["devise.regist_data"] = {user: @user.attributes} session["devise.regist_data"][:user]["name"] = params[:user][:name] session["devise.regist_data"][:user]["name_kana"] = params[:user][:name_kana] session["devise.regist_data"][:user]["email"] = params[:user][:email] session["devise.regist_data"][:user]["password"] = params[:user][:password] session["devise.regist_data"][:user]["tel"] = params[:user][:tel] session["devise.regist_data"][:user]["birthday"] = params[:user][:birthday] session["devise.regist_data"][:user]["status"] = params[:user][:status] # binding.pry @user = User.new(session["devise.regist_data"]["user"]) unless @user.valid? flash.now[:alert] = @user.errors.full_messages render :new and return end end
試したこと
registrations_controller.rb のsession記述の下に binding.pryを書きターミナルでsessionの中身を確認したところ日付(birthdayキー)の前後の値は取れているのですが、birthdayだけがnilになっています。
ターミナルのキャプチャリンク
※「prefectureキー」以下もnilになっていますが、現状の作業は「statusキー」までの入力なので、問題ありません。
開発環境
- ruby 2.5.1
- Rails 5.2.4.1
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。