में अवैध रूप प्रस्तुतियाँ को संभालने के लिए सही तरीका मैं रेल के लिए नया हूँ और यकीन है कि मैं जिस तरह से मैं ट्यूटोरियल मैं पूरी कर चुके हैं में से कुछ में काम को पूरा किया है के साथ सहमत नहीं हूँ। अमान्य फॉर्म सबमिशन को संभालने के तरीके के साथ समस्या को हल करना होगा।रेल
class ThingsController < ApplicationController
# POST /things
def create
@thing = Thing.new(params[:thing])
if @thing.save
flash[:notice] = 'Thing created'
redirect_to(@thing)
else
render :action => :new
end
end
@ thing.save विफल रहता है, उपयोगकर्ता एक ही फार्म के साथ, क्या चला गया की एक फ्लैश के साथ प्रस्तुत किया जाता है तो साथ पहले से भरे हुए बाहर मूल्यों वह अभी-अभी डाला के साथ: काम करने के मानक तरीका होने लगते हैं गलत। अभी तक इतना अच्छा है, सिवाय इसके कि अब यूआरएल चीजों/चीजों से चीजों में बदल गया है/जो कि इसके बजाय इंडेक्स व्यू को प्रस्तुत करने की उम्मीद करेगा।
इसके अलावा, अगर उपयोगकर्ता पेज ताज़ा करता है, वह अब सूचकांक दृश्य को देख रहा है। यदि वह वापस क्लिक करता है, तो उसे फ़ॉर्म को पुनः सबमिट करने के लिए कहा जाता है, जिसे मैंने हमेशा से बचने की कोशिश की है। अगर मैं redirect_to (new_thing_path) को रीडायरेक्ट करता हूं, तो उपयोगकर्ता की पिछली सबमिशन गुम हो जाती है, जैसे त्रुटि संदेश हैं।
मुझे एहसास है कि यह विधि "सही" हो सकती है, क्योंकि किसी वस्तु वस्तु का निर्माण/चीजों को पोस्ट करने का परिणाम होना चाहिए, लेकिन उपयोगकर्ता-इंटरफ़ेस-वार, मुझे विशेष रूप से इसकी परवाह नहीं है।
मैं कर सकता "मैन्युअल" उपयोगकर्ता के सत्र में अमान्य @thing वस्तु बचाने के लिए, प्रदर्शित करने के लिए के बाद मैं उसे वापस new_thing_path को अनुप्रेषित, लेकिन यह एक हैक की तरह लगता है। ऐसा लगता है कि ऐसा करने का "रेल मार्ग" होना चाहिए।
विचार?
मेरे पास रेल कोर के बारे में बिल्कुल वही शिकायत है, लेकिन आपने इसे मुझसे बेहतर कहा है :) अच्छा सवाल। – Andrew