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

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

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

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

Q&A

2回答

2645閲覧

Rails4.2 datetimeカラムに対して TimepickerとDatepickerを使用する方法

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby on Rails

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

jQuery

jQueryは、JavaScriptライブラリのひとつです。 簡単な記述で、JavaScriptコードを実行できるように設計されています。 2006年1月に、ジョン・レシグが発表しました。 jQueryは独特の記述法を用いており、機能のほとんどは「$関数」や「jQueryオブジェクト」のメソッドとして定義されています。

0グッド

0クリップ

投稿2015/06/26 05:40

編集2022/01/12 10:55

一つのdatetimeカラム(limit_dayカラム)に対してjQuery TimepickerとDatepickerを同時に使用する方法はありますでしょうか?

lang

1<div class="input-group"> 2 <span class="input-group-btn"> 3 <button class="btn" type="button"><span class="fui-calendar"></span></button> 4 </span> 5 <%= text_field_tag :limit_date, params[:limit_date],#ここでモデルと関連付いていないテキストフィールドを定義 6 data: {:default => Time.now + 14.day, 7 :start_year => Time.zone.now.year, 8 :end_year => Time.zone.now.year + 1, :minute_step => 10 }, 9 autocomplete: "on", 10 class: 'form-control datepicker', 11 placeholder: '2016/09/28', 12 id:"datepicker-01"%> 13 </div> 14 </div> 15 16 17 <div class="col-sm-9 col-md-4 col-lg-4"> 18 19 <div class="input-group"> 20 <span class="input-group-btn"> 21 <button class="btn" type="button"><span class="fui-time"></span></button> 22 </span> 23 <%= text_field_tag :limit_time, params[:limit_time], 24 data: {:default => Time.now + 14.day, 25 :start_year => Time.zone.now.year, 26 :end_year => Time.zone.now.year + 1, 27 :minute_step => 10 }, 28 autocomplete: "off", 29 placeholder: ' 12:30 PM', 30 class: 'form-control timepicker', 31 id: "timepicker-01"%> 32 </div> 33 </div> 34

lang

1 2def new 3 @item = current_user.items.build 4end 5 6 7def create 8 @item = current_user.items.build(item_params) 9 limit_day_str = "#{params[:limit_date]} #{params[:limit_time]}" 10 @item.limit_day = limit_day_str 11 12 13 respond_to do |format| 14 if @item.save 15 format.html { redirect_to items_continue_url, notice: 'アイテムを登録しました' } 16 17 #@user = User.find_by(id: current_user.id) 18 # deliverメソッドを使って、メールを送信する 19 # ItemMailer.item_email(@user, @item).deliver 20 21 format.json { render :show, status: :created, location: @item } 22 else 23 format.html { render :new } 24 format.json { render json: @item.errors, status: :unprocessable_entity } 25 end 26 end 27 end

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

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

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

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

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

guest

回答2

0

フレームワークを利用していて、これ以外使えないとのことなので
いったん普通のフィールドで(モデルと関連付いていないフィールドで)
日付と時間を受け取って、それを連結してからモデルの属性に格納するというのはどうでしょう?

lang

1<div class="input-group"> 2 <span class="input-group-btn"> 3 <button class="btn" type="button"><span class="fui-calendar"></span></button></span> 4 <%= text_field_tag :limit_date, #ここでモデルと関連付いていないテキストフィールドを定義 5 data: {:default => Time.now + 7.day, 6 :start_year => Time.zone.now.year, 7 :end_year => Time.zone.now.year + 1, :minute_step => 10 }, 8 autocomplete: "off", 9 class: 'form-control datepicker', 10 placeholder: '2016/09/28', 11 id:"datepicker-01"%> 12</div> 13 14<div class="input-group"> 15 <span class="input-group-btn"> 16 <button class="btn" type="button"><span class="fui-time"></span></button></span> 17 <%= text_field_tag :limit_time, #ここでモデルと関連付いていないテキストフィールドを定義 18 data: {:default => Time.now + 7.day, 19 :start_year => Time.zone.now.year, 20 :end_year => Time.zone.now.year + 1, 21 :minute_step => 10 }, 22 autocomplete: "off", 23 class: 'form-control timepicker', 24 id: "timepicker-01"%> 25</div> 26

で、Controllerでは

lang

1 2def create 3 hoge = Hoge.new 4 hoge.attributes = params[:hoge] 5 limit_day_str = "#{params[:limit_date]} #{params[:limit_time]}" 6 hoge.limit_day = limit_day_str 7 if hoge.save 8 # 以下略 9 # ・・・ 10end

投稿2015/06/27 02:24

rifuch

総合スコア1901

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

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

退会済みユーザー

退会済みユーザー

2015/06/27 06:21

ありがとうございます。試したところうまくいきませんでした。Controller部分を追記しましたが、画像のような状態となりカレンダーも表示されません
rifuch

2015/06/27 15:23

おっと、カレンダーの表示まではできていて、それ以降の値の受け渡しの部分が問題なのだと思っていました。 すみません。 提示したコードは、あくまで理解のためのサンプルであって、 動作確認したものではありません。 こちらをコピペしても、きちんと動作するかに関しては全く保証できません。 あなたが利用されているJQueryのDatePickeとTimePickerがどのようなもので、 実際にどのようにされているかについては、こちらもググって調べたに過ぎません。 私の理解では、TimePickerとDatePickerはJQueryの処理で時間が選択された時に、 対応するTextFieldに指定された書式のテキスト(yyyy-mm-dd, HH:MM:SS)が格納され、 それがsubmitでPOSTされるもの、という認識だけです。 その前提で、TextFieldに格納された値をどうやってModelのdateime属性に格納するのかで悩んでいるのだと思っていました。
退会済みユーザー

退会済みユーザー

2015/06/27 16:31

カレンダー表示はできているのですが、f.text_fieldをtext_field_tagに変えると画像のようになってしまうのです。
rifuch

2015/06/27 17:20

見たところ、テキストフィールドタグをレンダリングする過程で、うまいことパラメータが渡されずに、テキストフィールドのValueとして解釈されているようですね。 フォームヘルパのtext_fileldは、 f.text_field :attribute_name, options で指定したattributeの値がValueのデフォルトに設定されますが、 text_field_tag :param_name, value, options の書式で、デフォルト(ロードされたときに設定される値)は、valueに設定されたものとなります。 ちょっと自信がありませんが、 <%= text_field_tag :limit_time, Time.now + 7.day, # <-- これを追加 data: {:default => Time.now + 7.day, :start_year => Time.zone.now.year, :end_year => Time.zone.now.year + 1, :minute_step => 10 }, autocomplete: "off", class: 'form-control timepicker', id: "timepicker-01"%> とやってみたら、うまいことテキストフィールドがレンダリングされませんか? これでもレンダリングがうまくいかないのであれば、optionsの引き渡しがうまくいっていない可能性もあるので、value以降を{}で囲むなどして見たらどうでしょうか?
退会済みユーザー

退会済みユーザー

2015/06/28 09:29

ありがとうございます。正しく挙動するようになりました。 validate時ににも値を保持したいのでparams[:limit_date]、params[:limit_time]をそれぞ引数としました。 attributesの使い方がわからないので下記のようにしました。 @item = current_user.items.build(item_params) limit_day_str = "#{params[:limit_date]} #{params[:limit_time]}" @item.limit_day = limit_day_str お助けいただき感謝します。
guest

0

JQueryのパーツを使うなら、いっそDateTimePickerを使うって言うのはどうでしょう?

http://xdsoft.net/jqplugins/datetimepicker/

投稿2015/06/26 08:07

rifuch

総合スコア1901

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

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

退会済みユーザー

退会済みユーザー

2015/06/26 08:26

デザインフレームワークを使用していて、それがJQueryのパーツなのです。
rifuch

2015/06/26 08:30

なるほど、ピッカー同士を横に並べて使う、というのはどうでしょうか? http://ryus.co.jp/blog/datepickertimepicker/ 受けるController側で送られたtext_fieldの文字列を結合、それをパースしてモデルに格納すると。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

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

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

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問