2009-06-01 4 views
7

मैं एक ऐसी परियोजना का काम कर रहा हूं जिसमें आवर्ती, साप्ताहिक कार्यक्रम हों। इस प्रकार, मैं कई डेटटाइम फ़ील्ड्स को एक गैर-परंपरागत तरीके से उपयोग करता हूं। मैं जो काम कर रहा हूं वह एक फॉर्मबिल्डर है जो एक ऐसा क्षेत्र बनाता है जो एक सप्ताह के लिए चयन का उत्पादन करता है, और समय के लिए चयन करता है। मैं एक बारह घंटे प्लगइन का उपयोग कर रहा मैं ऑनलाइन पाया है, इसलिए काम करता है कि:रेल फॉर्मबिल्डर प्रश्न

class ActionView::Helpers::FormBuilder 
    def dow_time(dow,time,options={}) 
    rval = select(dow, DateTime::DAYNAMES) 
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true}) 
    end 
end 

समस्या मैं आ रही है कि काम करने के दिन का चयन वास्तव में एक डिफ़ॉल्ट चयनित मूल्य नहीं है है। यह मेरे निर्माण पृष्ठों पर ठीक काम करता है, लेकिन संपादन पृष्ठों पर नहीं। डॉव एक प्रतीक है जो कॉलिंग मॉडल में फ़ील्ड का संदर्भ देता है जहां सप्ताह की स्ट्रिंग का दिन "सोमवार", "मंगलवार" आदि है। मैं उस मूल्य को डाउन का उपयोग करके कॉलिंग मॉडल से कैसे खींच सकता हूं।

self[dow] 

काम नहीं करता क्योंकि यह एक अलग वर्ग में है।

कोई भी विचार? कुछ अलग?

उत्तर

13

आप एक FormBuilder अंदर कर रहे हैं, तो आप वर्तमान उद्देश्य केवल 'वस्तु' चर का उपयोग करके उपयोग कर सकते हैं।

पूर्व:

में: edit.html.erb

<% form_for(@event) do |form| %> 
    <%= form.custom_datetime_select(:event_starts_at) %> 
<% end %> 

अपने FormBuilder

def custom_datetime_select(field, options = {}) 
    start_time = object.send(field) 
    ... 
end 

दोनों object और object_name में आप के लिए निर्धारित है जब आप form_for फोन कर रहे हैं। अधिक जानकारी के लिए

actionpack/lib/action_view/helpers/form_helper.rb देखें।

+0

आप जीतते हैं, यही वही है जो मैं ढूंढ रहा हूं। धन्यवाद! –

0

यह आप के लिए काम करना चाहिए ...

class ActionView::Helpers::FormBuilder 
    def dow_time(dow_model, time, options={}) 
    rval = select(dowmodel, :dow, DateTime::DAYNAMES) 
    rval += time_select(time, {:minute_step => 15, :ignore_date => false, :twelve_hour => true}) 
    end 
end 
+0

self.read_attribute के साथ विफल: # के लिए अपरिभाषित विधि 'read_attribute ' क्योंकि मॉडल चर रहा है" modelinstance "काम नहीं करता है, या हो सकता है मैं गलत समझ रहा हूँ क्या आप कह रहे हैं। –

+0

मैंने कोड संपादित किया है। इसे इसके साथ कॉल करें: <% = dow_time (@mymodel, समय, आदि ...)%> –

+0

बहुत मदद की! धन्यवाद। :) –

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