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

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

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

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

Ruby on Rails

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

Q&A

0回答

1754閲覧

Flatpickrでの値の受け渡しについて

haruhi.

総合スコア18

Ruby on Rails 5

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

Ruby on Rails

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

0グッド

0クリップ

投稿2019/03/22 11:06

編集2019/03/24 01:08

前提・実現したいこと

Railsを勉強し始めた初心者です。
現在Flatpickrを用いて、イベントの日付を登録できるボタンを作っているのですが、うまくいきません。
なお、日付は『event_date』というカラムを作成しております。

どのように書けばFlatPickrで選択した日付をevent_dateに追加できるか教えていただきたいです。

発生している問題・エラーメッセージ

ボタンおよびカレンダーは表示されるが、押しても日付がカラムに追加されず、nullとなっている。
日付以外の必要情報(ユーザID・イベントID)は問題なく追加されている。

該当のソースコード

Rails

1 2<%= form_for(item.events.build) do |f| %> 3 <div class="field"> 4 <%= hidden_field_tag :event_id, event.id %> 5 <%= f.text_field :event_date, id: 'flatpickr' %> 6 <div class="text-right"> 7 <%= button_tag(type: 'submit', class: "btn pressed text-right") do %> 8 <i class="fas fa-plus-circle"></i> 9 <% end %> 10 </div> 11 </div> 12<% end %>

###JS部分(追記)

<script> flatpickr('#flatpickr'); </script>

Controller

1class EventsController < ApplicationController 2 before_action :authenticate_user! 3 4 def create 5 @item = Item.find(params[:item_id]) 6 @item.event(current_user) 7 redirect_to controller: 'items', action: 'index' 8 end

試したこと

下記リンクの流れに沿って書き直したが、やはりnullのままだった
https://zeph.co/flatpickr-datetime.html

###追記
質問後、ご指摘を受け確認したところ『Flatpickrからevent_dateに値が渡せていない』ことが原因なのかと思いましたが…。
コンソールは以下のようになっております。

Event Create (0.6ms) INSERT INTO "events" ("user_id", "item_id", "created_at", "updated_at") VALUES (?, ?, ?, ?) [["user_id", 8], ["item_id", 1], ["created_at", "2019-03-23 14:15:43.300239"], ["updated_at", "2019-03-23 14:15:43.300239"]] ↳ app/models/item.rb:39

初心者ゆえに言葉足らず・知識不足な部分も多くあるかと思いますが、どなたかご助言いただければ幸いです。

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

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

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

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

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

mypt

2019/03/23 02:41

コントローラーとJSのコードがないと判断しようがないんですが どの段階でうまくいってないか切り分けたほうがいいと思います まずflatpickerがevent_dateのフォームに値をきちんとセットしていますか? JSにエラーは出ていませんか? flatpickr("#flatpicker", {}); は呼ばれていますか? 動作環境はあっていますか? Parameterが正しく飛んできている場合 他のカラムは保存できているということなのでバリデーションやルートは問題なさそうなので ストロングパラメーターのpermitはセットされていますか? flatpickerが生成する時刻文字列のフォーマットがデータベースの認識するフォーマットになってますか? このあたりを調べてみてほしいです
haruhi.

2019/03/23 13:07

ご指摘ありがとうございます。 確認いたしましたところ、flatpickerがevent_dateのフォームに値をセットできていませんでした。
mypt

2019/03/23 17:02 編集

flatpickr の記述は問題ないように見えます >『Flatpickrからevent_dateに値が渡せていない』 動いていればフォームの値が変化するので最初の質問の時点で一目見てわかるはずで なにか認識の相違があるきがしますが… >Flatpickrからevent_dateに値が渡せていない フォームの textfield に日付が表示されないということですか? そもそもカレンダーポップアップ自体は出るのでしょうか? JSのデバッグをどうやってるのかは知りませんがJSのエラーは出ていませんか? chromeならF12あたりで開発ツールを出してConsoleというところで見られます >eventのINSERT文にevent_dateが含まれていません flatpickerが動いていなくても空文字列を挿入しようとするはずなので 存在自体がないとなるとむしろstring parameter あたりが怪しい気がしますが いずれにしろコントローラーやコンソールのログ(SQLのログではなく create に渡されるフォームパラメータ)をはっていただかないとこれ以上は答えられないです
haruhi.

2019/03/24 01:11

ご指摘いただきありがとうございます。 Flatpickrは<script>〜</sctipt>で事足りるのかと思っていたのですが…調べ直します。 Controllerならびにコンソールのログ(ご指摘いただいた部分を正しく貼れている自信がないのですが…)を追記いたしました。 よろしくお願いいたします。
mypt

2019/03/24 02:20 編集

>カレンダーポップアップ自体は出るのでしょうか? >フォームの textfield に日付が表示されないということですか? 送信ボタンを押したときにコンソールに { event => { event_date => '2019-03-24' ... } のようなログが出ていると思います event_date => '' となっていたり event_date の項目自体はありますか? このあたりを答えてほしいです それだけで flatpickr が悪いのかコントローラーが悪いのか判断できます あとflatpickrはあくまでRailsとは無関係でただテキストフィールドに日付を入力するための部品に過ぎません なのでMySQLのログに出ていない=flatpickrが原因とは断定できません 流れとしては flatpickrはフォームをクリックしたときにカレンダーを出す⇒日付を選ぶとフォームに日付をセットする というところしかやっていません 送信ボタンを押したときにフォームにセットされた日付をRailsに送信しているのはブラウザ(view) フォームから来たデータをデータベースに登録するのはコントローラがやっています flatpickrがなくても空文字列のフォームデータが送信されるはずで 保存されるSQLのログのカラムにすら存在していないのはおそらくコントローラ もしくはそもそもテーブルにカラムが存在していないのでは? と思っている次第です
haruhi.

2019/03/25 01:19

お返事遅くなり申し訳ありません。 コントローラが原因でした。 自己解決したプロセスも可能な限り早く書き留めたいと思います。 ご対応いただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問