2010-10-18 20 views
14

से पॉप्युलेट नहीं यहाँ मेरी मॉडलदिनांक समय और रेल 3

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'), "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) 
+0

कृपया कुछ लॉग पंक्तियाँ जोड़ें ताकि हम देख सकते हैं कि मूल्यों को सही ढंग से नियंत्रक को आपूर्ति की जाती है। –

उत्तर

8

Mongoid multiparameter प्रबंधन नहीं करती है, जैसे दिनांक विशेषताओं का अभी तक है, तो आप निम्न कार्य करने होंगे:

# 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

41

Mongoid के हाल के संस्करण बहु-पैरामीटर विशेषताओं को संभालते हैं , तो आप सिर्फ अपने मॉडल में मॉड्यूल शामिल करने के लिए है:

include Mongoid::MultiParameterAttributes 

डॉक्स: http://mongoid.org/en/mongoid/docs/rails.html

+1

धन्यवाद गेबे। यही वही था जो मुझे –

+0

की आवश्यकता थी, यह सरल_फॉर्म से डेटाटाइम में भी मदद करता था –

संबंधित मुद्दे