2009-06-08 13 views
8

मैं खुद को रूबी पर रूबी सिखाने के लिए एक सरल टू-डू सूची एप्लिकेशन बना रहा हूं, हालांकि मैंने एक समस्या में भाग लिया है। मेरे पास एक साधारण रूप है जो उनके बाईं ओर एक चेक बॉक्स के साथ आइटम करता है, और नीचे "अपडेट" बटन सूचीबद्ध करता है, जैसे:मैं रेल के रूप में एक रूबी में एकाधिक रिकॉर्ड कैसे संपादित करूं?

[] व्यंजन
[] बाहर निकालें कचरा
[] दुनिया
(अपडेट)

प्रत्येक टू-डू आइटम एक "पूरा" बूलियन क्षेत्र के साथ डेटाबेस में एक अलग रिकॉर्ड है से अधिक है। मैं फॉर्म को चेक-ऑफ आइटम आईडी की एक सूची में एक क्रिया में सबमिट करना चाहता हूं जिसमें मैं प्रत्येक आइटम के "पूर्ण" फ़ील्ड को सत्य पर सेट कर सकता हूं, जो उन्हें दृश्य से छुपाएगा।

मुझे पता है कि एक मॉडल बनाने के लिए जो कई मॉडलों का संदर्भ देता है, लेकिन ऐसा नहीं है जो एक ही मॉडल के एकाधिक रिकॉर्ड का संदर्भ देता है। कोई सुझाव?

धन्यवाद!

+1

आप अपने वर्तमान नियंत्रक कोड पोस्ट कर सकते हैं? – csexton

+0

मेरे पास अभी तक कोई नहीं है; मैं अभी भी संकल्पनात्मक रूप से सोच रहा हूं कि मैं डेटा को नियंत्रक को पास करने के लिए फॉर्म सेट अप करने के बारे में कैसे जाऊंगा। –

उत्तर

25

रेलसकास्ट आपका मित्र है!

http://railscasts.com/episodes/52-update-through-checkboxes

यह वास्तव में सरल है:

# routes.rb 
map.resources :tasks, :collection => { :complete => :put } 

# tasks_controller.rb 
def complete 
    Task.update_all(["completed_at=?", Time.now], :id => params[:task_ids]) 
end 

# views\tasks\complete.html.erb 
<% form_tag complete_tasks_path, :method => :put do %> 
    <ul> 
    <% for task in @incomplete_tasks %> 
    <li> 
     <%= check_box_tag "task_ids[]", task.id %> 
     <%= task.name %> 
    </li> 
    <% end %> 
    </ul> 
    <%= submit_tag "Mark as Complete" %> 
<% end %> 
+0

धन्यवाद ल्यूक, ऐसा लगता है कि मैं क्या देख रहा हूं। –

+0

सुंदर कोड, पढ़ने के लिए आसान है। – s84

+0

लेबल को '

1

किसी आइटम की जांच होने पर डेटाबेस को अपडेट करने के लिए दूरस्थ फ़ंक्शन का उपयोग क्यों न करें, और अपडेट बटन से पूरी तरह से छुटकारा पाएं?

+0

मैं बाद में इस पर विचार कर रहा हूं, लेकिन मैं इसे किसी भी जेएस के बिना पहले काम करना चाहता हूं, क्योंकि ऐसा लगता है कि यह बहुत कठिन है (या कम से कम यह इंप्रेशन मुझे मिलता है) और इस बिंदु पर मैं बनाने के लिए उत्तरदायी हूं बेवकूफ गलतियों का एक टन। –

0

चूंकि आप अपना फॉर्म बनाते समय प्रत्येक रिकॉर्ड के लिए आईडी शामिल कर सकते हैं, इसलिए आप नियंत्रक को पोस्ट में आइटमों के माध्यम से फिर से चालू करना चाहते हैं, फिर तदनुसार उन प्रत्येक रिकॉर्ड को ढूंढें और अपडेट करें।

+0

मुझे लगता है कि मैं देख रहा हूं कि आप क्या कह रहे हैं; टोडो आइटम की आईडी का उपयोग करके प्रत्येक चेकबॉक्स (गैर-मोडल फॉर्म_टैग फॉर्म में) का नाम दें, फिर नियंत्रक में हैश के माध्यम से फिर से भरें और उसके अनुसार रिकॉर्ड संशोधित करें? क्या इस दृष्टिकोण में कोई संभावित गठिया है कि मुझे ध्यान में रखना चाहिए? –

2

वाह। यह कुछ समय है। मेरे आरएसएस रीडर में इस प्रश्न से ठीक पहले आइटम रायन बेट्स से नवीनतम railscast है और यह वास्तव में आप जो पूछ रहे हैं उसे कवर करना प्रतीत होता है।

+0

यह अच्छी तरह से काम किया, हेड-अप के लिए धन्यवाद! –

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