ruby – 具有MongoDB / Mongoid和Rails 3的日期时间不填充
发布时间:2020-12-16 20:45:35 所属栏目:百科 来源:网络整理
导读:这是我的模型中的代码 include Mongoid::Document include Mongoid::Timestamps field :message,:type = String field :send_at,:type = DateTime 这是我的表单部分的代码 %= f.label :send_at %br / %= f.datetime_select :send_at % 但是日期和时间从未被
这是我的模型中的代码
include Mongoid::Document include Mongoid::Timestamps field :message,:type => String field :send_at,:type => DateTime 这是我的表单部分的代码 <%= f.label :send_at %><br /> <%= f.datetime_select :send_at %> 但是日期和时间从未被填充. [更新日志条目] Started POST "/notifis" for 127.0.0.1 at Mon Oct 18 05:48:05 -0400 2010 Processing by NotifisController#create as HTML Parameters: {"commit"=>"Create Notifi","authenticity_token"=>"/hrlnvA2Xn5NqGgCkPFAQV254IHPJEvZoLxOYNNUwhc=","_snowman"=>"?","notifi"=>{"send_at(2i)"=>"10","is_sent"=>"0","send_at(3i)"=>"18","send_at(4i)"=>"09","message"=>"erwer","send_at(5i)"=>"48","send_at(1i)"=>"2010"}} MONGODB noti_development['notifis'].insert([{"send_at(2i)"=>"10","created_at"=>Mon Oct 18 09:48:05 UTC 2010,"is_sent"=>false,"updated_at"=>Mon Oct 18 09:48:05 UTC 2010,"_id"=>BSON::ObjectID('4cbc17d5c24d7602bc00002d'),"message"=>"Sample Message","send_at(1i)"=>"2010","send_at(5i)"=>"48"}]) Redirected to http://localhost:3000/notifis Completed 302 Found in 4ms Started GET "/notifis" for 127.0.0.1 at Mon Oct 18 05:48:05 -0400 2010 Processing by NotifisController#index as HTML MONGODB noti_development['users'].find({:_id=>BSON::ObjectID('4cb9db18c24d7602bc000007')},{}).limit(-1) MONGODB noti_development['notifis'].find({},{}) Rendered notifis/index.html.erb within layouts/application (42.0ms) Completed 200 OK in 52ms (Views: 51.2ms) 解决方法
Mongoid不处理Date的多参数属性,因此您需要执行以下操作:
# copied from: https://gist.github.com/315227 # add this to a new file in your lib directory module MultiParameterAttributes def filter_time(attributes,name) attrs = attributes.collect do |key,value| if key =~ /^#{Regexp.escape(name.to_s)}((d+)(w))$/ [$1.to_i,value.send("to_#$2")] end end.compact.sort_by(&:first).map(&:last) Time.zone.local(*attrs) unless attrs.empty? end end # include the module above in your application_controller.rb class ApplicationController < ActionController::Base include MultiParameterAttributes end # and in the controller action where you process the form params,use filter_time class YourController < ApplicationController def your_action time = filter_time(params,:my_time_attribute_name) end end 这里有更多的信息: (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |