date_selectタグを使用してフォームから日付データの引き渡しを受け、DB格納する際の話です。
下記2点についてご教示いただきたく。。
①form_withで記載し、fタグを使用しているのに指定のモデルとして認識されない。
こんな感じ → user=>{xxx:xxx},birthday=>{xxxx(1),xxx(2),xxx(3)}
rails
1 2= form_with model:@user, url:XXXXX_path,builder: WithErrorFormBuilder, method: :get,local: true do |f| 3 != sprintf(f.date_select(:birthday, prefix:'birthday',with_css_classes:'user-main__contents__form__group__item__input', prompt:"--",use_month_numbers:true, start_year:Time.now.year, end_year:1900, date_separator:'%s'),'年','月') 4 = f.submit '登録する' 5 6
※呼び出し元のControllerで@user = User.newしています。
【教えて欲しいこと】
他の項目(text.fieldなど)はうまくいっているのですが、何故うまくいかないのでしょう。。
インデントは問題ないように思います。。
②指定のモデルに入れられたとしても分割されており、ストロングパラメータで取得することができない。
viewから受け渡されるパラメータは下記のように年月日で分割されています。
これに対して、ストロングパラメータのpermitに日付項目(:birthday)を指定していても、値は取得できません。
rails
1 2 "birthday"=>{"birthday(1i)"=>"2016", "birthday(2i)"=>"6", "birthday(3i)"=>"5"} 3
[確認したこと]
・ ストロングパラメータの関数を使う前にparamsを強制的に書き換えて結合すると上手くいきます
・ ストロングパラメータを使わずにDBをcreateする(@user = Use.create(params[:user][:birthday])など)ことも可能でした(user_paramsを使う前にparams[:user][:birthday]に格納している前提)
【教えて欲しいこと】
date_selectを使った場合、どのようにストロングパラメータを使うのが定石なのでしょうか。
明後日なことをいっている可能性もありますが、何卒よろしくお願いいたします。
あなたの回答
tips
プレビュー