質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Q&A

0回答

955閲覧

date_selectのストロングパラメータ対応

zackieeee

総合スコア16

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

0グッド

0クリップ

投稿2019/08/19 02:57

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を使った場合、どのようにストロングパラメータを使うのが定石なのでしょうか。

明後日なことをいっている可能性もありますが、何卒よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだ回答がついていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問