は@Althaf
からの助けを借りて解決策が戻っ日時に変換することbefore_save
コールバックを使用しmodel.rb に仮想属性を追加しましたが見つかりました。
before_save :convert_to_datetime
def sched_date_field
sched_date.strftime("%d/%m/%Y") if sched_date.present?
end
def sched_time_field
sched_time.strftime("%I:%M%p") if sched_time.present?
end
def sched_date_field=(date)
# Change back to datetime friendly format
@sched_date_field = Date.parse(date).strftime("%Y-%m-%d")
end
def sched_time_field=(time)
# Change back to datetime friendly format
@sched_time_field = Time.parse(time).strftime("%H:%M:%S")
end
def convert_to_datetime
self.sched_time = DateTime.parse("#{@sched_date_field} #{@sched_time_field}")
end
使用して、レール4は、controller.rbに厳しいのparamsにsched_date_fieldとsched_time_fieldを追加する必要がここ
は_form.html.erbにフィールドです
<%= f.label :sched_date_field, "Scheduled Date" %>
<%= f.text_field :sched_date_field, :class => "datepicker" %>
<%= f.label :sched_time_field, "Scheduled Time" %>
<%= f.text_field :sched_time_field, :class => "timepicker" %>
strict paramsでは、 "strong params"を意味しますか?また、このコードはsched_timeに未定義の変数エラーを発生させるようです。 –
これはちょっとした問題ですが、この手法を使用し、 'sched_time'フィールドで検証が必要な場合は失敗します。 'before_save'を' before_validation'に変更することができます。しかし、カスケード検証がある場合は、これも失敗する可能性があります。この短いコメントで説明するのは少し難しいですが、私を信じて、それは失敗します。 – Karl
@Karl代わりに何をお勧めしますか?私はこの問題に遭遇しています..データモデルを変更して日付、時刻、タイムゾーンを3つの別々のフィールドに格納することを考えています。 – Turgs