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

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

新規登録して質問してみよう
ただいま回答率
85.48%
date

dateは、date型や日付に関する関数や処理についてのタグです

Ruby on Rails

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

Q&A

0回答

527閲覧

[Rails] date_field_tagで入力した値が登録できない

BLACK13

総合スコア17

date

dateは、date型や日付に関する関数や処理についてのタグです

Ruby on Rails

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

0グッド

0クリップ

投稿2020/04/10 09:55

#困っていること

下記のようにViewにform_withでユーザー入力用にフォームを作成し、日付入力欄を設けました。
( <%= f.label :due_date %> <%= date_field_tag :due_date %>の部分)

_form.html.erb

ruby

1<%= form_with model: @challenge do |f| %> 2 <%= render 'shared/error_messages', object: f.object %> 3 4<div> 5 <%= f.label :title %> 6 <%= f.text_field :title, class: 'form-control' %> 7 8 9 <%= f.label :story %> 10 <%= f.text_field :story, class: 'form-control' %> 11 12 13 <%= f.label :close_condition %> 14 <%= f.text_field :close_condition, class: 'form-control' %> 15 16 <%= f.label :due_date %> 17 <%= date_field_tag :due_date %> 18 19 <%= f.label :Image %> 20 <span class="picture"> 21 <%= f.file_field :image, accept: 'image/jpeg,image/gif,image/png,video/*' %> 22 </span> 23 24 <%= f.label :place %> 25 <%= render 'point_googlemap'%> 26 27</div> 28 29 <P> 30 <%= f.submit yield(:button_text), class: "btn btn-default" %> 31 </P> 32<% end %> 33

フォームの表示は問題なくdate_field_tagについても(日付)入力が行えるのですが、フォームで入力したレコードについて、date_field_tagで入力した項目が登録できていませんでした。byebug/debuggerを使用して、コントローラ側のdef createをステップ実行して追ってみたのですが、
paramsには対象の項目("due_date")が含まれているものの、

Parameters: {"utf8"=>"✓", "authenticity_token"=>"省略", "challenge"=>{"title"=>"テスト", "story"=>"テスト", "close_condition"=>"テスト"}, "due_date"=>"2031-12-11", "commit"=>"Create"}

対象のレコードのオブジェクト?では対象の項目("due_date")はnilになってしまっています。

#<Challenge id: 24, user_id: 2, title: "テスト", story: "テスト", close_condition: "テスト", due_date: nil, created_at: "2020-04-10 08:48:06", updated_at: "2020-04-10 08:48:06", status: nil, image: nil, place: nil>

対象のレコードのモデルではdue_dateの項目はdate型で定義しています。

#試したこと・気になった点

①対象レコードのモデルは以下のようにstrong parameterを指定しています。

private def challenge_params params.require(:challenge).permit(:title, :story, :close_condition, :due_date, :image) end

このようにstrong parameterでも項目のdue_dateはpermitに指定しているので問題ないのかと思ったのですが、byebugでステップ実行している中で試しにchallenge_paramsを参照すると

<ActionController::Parameters {"title"=>"テスト", "story"=>"テスト", "close_condition"=>"テスト"} permitted: true>

となります。

②該当のviewのdue_dateをdate_field_tagではなく他の項目と同様にtext_fieldにしてみると問題なく登録できます。(但し、正しい日付フォーマットのデータを入力している場合のみですが)

初心者の質問で恐縮ですが、お気づきの点ありましたら指摘いただけると大変助かります。

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

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

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

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

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

guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問