2012-03-16 13 views
6

मैं अपने एपीआई को एक पोस्ट अनुरोध भेज रहा हूं जो ठीक काम करता है, यह एक नया रिकॉर्ड बनाता है। हालांकि, के बाद रिकॉर्ड बनाई गई है मैं सर्वर लॉगसफल 'बनाने' क्रिया चलाने के बाद NoMethodError

NoMethodError (undefined method `device_url' for #<Api::V1::DevicesController:0x007fa2f5dde5d8>):app/controllers/api/v1/devices_controller.rb:14:in `create' 

यह मेरा कार्रवाई बनाने

def create 
    respond_with Device.create(params[:device]) 
end 

मेरे सभी संसाधनों एपीआई # V1 के तहत namespaced कर रहे हैं, यहाँ है मेरी मार्गों फ़ाइल है

में यह त्रुटि प्राप्त
# Api ('/api') 
namespace :api do 
    # Version 1 ('/api/v1') 
    namespace :v1 do 
     # Locations ('/api/v1/locations') 
     resources :locations 
     # Videos ('/api/v1/videos') 
     resources :videos 
     # Devices ('/api/v1/devices') 
     resources :devices 
    end 
end 

उत्तर

8

एक HTML पोस्ट अनुरोध के लिए, सफलतापूर्वक वस्तु बनाने के बाद, respond_with वस्तु के पथ पर रीडायरेक्ट, यानी यहां यह

0 की तरह कुछ के बराबर होगा
redirect_to Device.create(params[:device]) 

जो device_url पर रीडायरेक्ट करता है। लेकिन जब से तुम namespaced है: अपने मार्गों में उपकरणों, आप अपने respond_with कॉल, जो

respond_with :api, :v1, Device.create(params[:device]) 
+0

आप आदमी, धन्यवाद कर रहे हैं हो सकता है करने के लिए है कि निर्दिष्ट करने के लिए की जरूरत है। –

+0

यह एक आकर्षण की तरह काम करता है! धन्यवाद दोस्त। –

+0

यह काम करता है, समाधान के लिए धन्यवाद। लेकिन क्या answer_with में रीडायरेक्ट करने के लिए अक्षम करने के लिए वैसे भी है? चूंकि यह एक एपीआई पोस्ट अनुरोध है, हमें वास्तव में रीडायरेक्ट व्यवहार की आवश्यकता नहीं है। – lionel

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