将text_field存储为datetime ?? (日期选择器)

时间:2013-01-30 15:06:53

标签: ruby-on-rails ruby-on-rails-3 datetime ruby-on-rails-3.2 datetimepicker

我的'事件'表有2个日期时间值来存储开始和结束日期。

他们曾经是这样的

.field
    = f.label t :event_start_date
    %br
    = f.datetime_select :start_date
  .field
    = f.label t :event_finish_date
    %br
    = f.datetime_select :finish_date

我使用了日期时间选择器插件,它在视觉上很好用。但是,由于字段从datetime_select更改为text_field,因此在创建新事件时不会存储这些值。

这就是现在的样子:

.field
    = f.label t :event_start_date
    %br
    = f.text_field :start_date, :class=>"datetime_box", :size=>"17"
  .field
    = f.label t :event_finish_date
    %br
    = f.text_field :finish_date, :class=>"datetime_box", :size=>"17"

如果有人需要,这就是js:

$(function() {
    $('.datetime_box').datetimepicker({
            minDate: new Date(),
            showOn: "button",
            buttonImage: "../images/pais_vasco_conciertos_teatro_musica_grupos.png",
            buttonImageOnly: true
    });
});

知道如何克服这个问题并存储值吗?

事件控制器

def create

    categories = params[:category_ids] or []
    @event = Event.new(params[:event].merge(:user_id => current_user.id, :category_ids => categories))

    respond_to do |format|
      if @event.save

        #Mailer to seek appoval
        format.html { redirect_to @event, notice: 'Event was successfully created.' }
        format.json { render json: @event, status: :created, location: @event }
      else
        format.html { render action: "new" }
        format.json { render json: @event.errors, status: :unprocessable_entity }
      end
    end
  end

此网站有4种语言版本。此错误仅显示在英语下。所以,我想这与格式有关..

格式示例: 西班牙语和法语(作品)

"start_date"=>"30/01/2013 16:39",
 "finish_date"=>"31/01/2013 16:39",

巴斯克(作品)

"start_date"=>"2013/01/30 16:38",
 "finish_date"=>"2013/01/31 16:38",

英语(不起作用)

如何让MM / DD / YY工作?再次感谢

"start_date"=>"01/30/2013 16:40",
 "finish_date"=>"01/31/2013 16:40",

1 个答案:

答案 0 :(得分:0)

您需要确保传递给控制器​​的日期(作为字符串)可以由ruby解析。一种方法是将日期和时间格式传递给datetimepicker。试验适合您需求的格式以及ruby可以解析的内容。

尝试添加这些选项,看看是否可以解决您的问题

$(elem).datetimepicker({
  dateFormat: 'M d, yy',
  timeFormat: 'hh:mm tt'
});