加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby-on-rails – 使用Rails保存之前将字符串转换为日期

发布时间:2020-12-16 22:36:22 所属栏目:百科 来源:网络整理
导读:对 Ruby很新,我已经停了几个小时.搜索无处不在,找不到答案. 所以我正在使用rails gem的引导datepicker. 因为我更改了datepicker的日期格式,它不会存储在数据库中.猜测这是因为simple_form输入被用作字符串,以避免由simple_form应用的默认日期选择输入. 我的
对 Ruby很新,我已经停了几个小时.搜索无处不在,找不到答案.

所以我正在使用rails gem的引导datepicker.

因为我更改了datepicker的日期格式,它不会存储在数据库中.猜测这是因为simple_form输入被用作字符串,以避免由simple_form应用的默认日期选择输入.

我的问题是:如何将“06/18/2013”??之类的字符串修改/转换为保存到db之前的日期?这最好由控制器处理吗?

我的控制器:

# PUT /events/1
# PUT /events/1.json
def update
  @event = Event.find(params[:id])

  # Ugghhhh I need help
  # @event.event_date = Date.parse(params[:event_date]).to_date

  respond_to do |format|
    if @event.update_attributes(params[:event])
      format.html { redirect_to @event,:notice => 'Event was successfully updated.' }
      format.json { head :no_content }
    else
      format.html { render :action => "edit" }
      format.json { render :json => @event.errors,:status => :unprocessable_entity }
    end
  end
end

DB架构:

create_table "events",:force => true do |t|
    t.string   "event_name"
    t.string   "event_location"
    t.date     "event_date"
    t.time     "event_time"
    t.text     "event_content"
    t.datetime "created_at",:null => false
    t.datetime "updated_at",:null => false
    t.integer  "user_id"
    t.boolean  "approved",:default => true
    t.integer  "category_id"
  end

这是服务器日志:

Started PUT "/events/1" for 127.0.0.1 at 2013-06-14 02:37:15 -0700
  Processing by EventsController#update as HTML
    Parameters: {"utf8"=>"?","authenticity_token"=>"RYMdJ0lFmvG0+nVIsTtJXu5fyD/L3/WAKsk9FX6WWgo=","event"=>{"user_id"=>"1","category_id"=>"3","event_name"=>"A Event Name","event_location"=>"Event Location","event_date"=>"06/13/2013","event_time(1i)"=>"2000","event_time(2i)"=>"1","event_time(3i)"=>"1","event_time(4i)"=>"02","event_time(5i)"=>"18","event_content"=>"First night"},"commit"=>"Update Event","id"=>"1"}
    User Load (0.2ms)  SELECT "users".* FROM "users" WHERE "users"."id" = 1 LIMIT 1
    Event Load (0.1ms)  SELECT "events".* FROM "events" WHERE "events"."id" = ? LIMIT 1  [["id","1"]]
     (0.0ms)  begin transaction
     (0.0ms)  commit transaction
  Redirected to http://localhost:3000/events/1
  Completed 302 Found in 4ms (ActiveRecord: 0.3ms)

解决方法

您可以在控制器中使用strptime.
DateTime.strptime("06/18/2013","%m/%d/%Y")

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读