मेरे पास मेरे रेल 3 एप्लिकेशन में एक पर्चे मॉडल है। मैं रिकॉर्ड्स को डुप्लिकेट करने की अनुमति देने का सबसे अच्छा तरीका तैयार करने की कोशिश कर रहा हूं, लेकिन उपयोगकर्ता को सहेजने से पहले डुप्लिकेट की "समीक्षा" करने की इजाजत देता है।रेल 3 में एक रिकॉर्ड डुप्लिकेट करना
मैंने SO (जैसे this एक) पर कई प्रश्न/उत्तर पढ़े हैं जो बताते हैं कि रिकॉर्ड को डुप्लिकेट/क्लोन कैसे करें और फिर इसे सेव करें - लेकिन कोई भी जो सहेजने से पहले फ़ॉर्म को दिखाने का तरीका बताता है।
रेल एपीआई पढ़ना clone विधि उपलब्ध है।
पढ़ना other questions और जवाब से पता चलता है है कि किया जा सकता है, लेकिन कोई उदाहरण कोड से अलग है:
new_record = old_record.dup
नियंत्रक कोड मैं वर्तमान के साथ इस प्रकार है काम कर रहा हूँ (मॉडल किसी भी रिश्ते नहीं है):
# POST /prescriptions
# POST /prescriptions.json
def create
@prescription = Prescription.new(params[:prescription])
@prescription.localip = request.env['REMOTE_ADDR']
@prescription.employee = @prescription.employee.upcase
respond_to do |format|
if @prescription.save
format.html { redirect_to @prescription, notice: 'Prescription was successfully created.' }
format.json { render json: @prescription, status: :created, location: @prescription }
else
format.html { render action: "new" }
format.json { render json: @prescription.errors, status: :unprocessable_entity }
end
end
end
मैं के साथ दृश्य से यह क्लोन कार्रवाई को जोड़ने जा करने के लिए जा रहा हूँ:
<%= link_to "Create another like this?", clone_prescription_url(@prescription), :method => :put %>
क्या यह मेरे नियंत्रक को इस तरह की कार्रवाई जोड़ने जैसा आसान है?
def clone
@prescription = Prescription.find(params[:id])
@prescription.dup
@prescription.save
end
उपरोक्त कोड पूरी तरह गलत है, तो माफी माँगती है, मैं इसके चारों ओर अपना सिर लेने की कोशिश कर रहा हूं! मैंने someone देखा है जो मैं क्लोनिंग के साथ प्राप्त करने की कोशिश कर रहा हूं - लेकिन सहेजने से पहले संपादन के साथ नहीं।
डुप्लिकेट करने वाले उपयोगकर्ता को सहेजे जाने के बाद रिकॉर्ड संपादित करने की अनुमति नहीं होगी। यह पूरी तरह से आंतरिक डेटा प्रविष्टि के लिए है।
मुझे लगता है कि यह सही जवाब है, के बाद से रेल जब 'एक मॉडल पर dup' का उपयोग कर शून्य करने के लिए आईडी सेट, इलाज: यह कैसे मैं इसे अपने मॉडल का उपयोग कर अपने आवेदन में काम करने के लिए प्राप्त करने के लिए तर्क संशोधित है यह नया है। Http://apidock.com/rails/ActiveRecord/Core/dup देखें –