#困っていること
下記のように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にしてみると問題なく登録できます。(但し、正しい日付フォーマットのデータを入力している場合のみですが)
初心者の質問で恐縮ですが、お気づきの点ありましたら指摘いただけると大変助かります。
あなたの回答
tips
プレビュー