前提・実現したいこと
date_select
メソッドを用いて生年月日をUserテーブルにアップデートしたいがフォームから受け取った値をテーブルに保存できない。(エラーにはならない)
ユーザー登録画面で名前メールアドレス、パスワードを保存。その後決済画面にて生年月日と性別を入力しUserテーブルにアップデートしたいが、生年月日がアップデートできない。(決済画面に到着するユーザーはログイン中)
できる限りスマートに書きたいので、ストロングパラメターを用いて記述できると嬉しいです。
こだわりはないのでより綺麗な書き方があればそちらも教えていただきたいです
該当のソースコード
haml
1.col.col-form-label 2 生年月日 3.col 4 = date_select :birthday, :birthday
ruby
1current_user.update(birthday: params[:birthday]
試したこと
コンソールでparams[:birthday]
を確認すると
>> params[:birthday] => <ActionController::Parameters {"birthday(1i)"=>"2017", "birthday(2i)"=>"12", "birthday(3i)"=>"13"} permitted: false>
となるのでここからうまくbirthday
に保存できてないのではないか
ストロングパラメーターとしてコントローラー内に定義することもしてみましたが同様に保存がかからず。。updateかけるときはuser_params[:birthday]
やuser_params[:birthday][:birthday]
などをbirthday
に渡しています。
ruby
1def user_params 2 params.permit( 3 birthday: %i[birthday(1i) birthday(2i) birthday(3i)] 4 ) 5end
ruby
1def user_params 2 params.permit( 3 :birthday 4 ) 5end
ruby
1def user_params 2 params.permit( 3 birthday: %i[birthday(1i) birthday(2i) birthday(3i)] 4 ).to_h 5end
ruby
1def user_params 2 params.permit( 3 :birthday 4 ).to_h 5end
補足情報(FW/ツールのバージョンなど)
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。