这是我的模型中的代码
include Mongoid::Document include Mongoid::Timestamps field :message, :type => String field :send_at, :type => DateTime
这是我的表单部分的代码
<%= f.label :send_at %>
<%= f.datetime_select :send_at %>
但是从不填充日期和时间.我确保Mongo和Mongoid也是最新的.不确定是否有我遗漏的东西.
[更新日志条目]
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'), "send_at(3i)"=>"18", "message"=>"Sample Message", "send_at(4i)"=>"09", "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)
Gabe Kopley.. 41
最近版本的Mongoid 会处理多参数属性,您只需要在模型中包含该模块:
include Mongoid::MultiParameterAttributes
文档:http://mongoid.org/en/mongoid/docs/rails.html
最近版本的Mongoid 会处理多参数属性,您只需要在模型中包含该模块:
include Mongoid::MultiParameterAttributes
文档:http://mongoid.org/en/mongoid/docs/rails.html
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
这里有更多信息:http: //groups.google.com/group/mongoid/browse_thread/thread/f83cbdd641581912