2010-08-17 10 views
5

में routes.rbअवहेलना विधि

map.resources :users 

उत्पन्न कुछ इस तरह हो सकता है मार्गों नीचे की तरह एक लाइन कुछ को देखते हुए POST /users की HTTP विधि {:controller=>"users", :action=>"create"} पर मैपिंग को HTTP विधि में PUT के रूप में उपयोग किया जा रहा है?

 users GET /users(.:format)   {:controller=>"users", :action=>"index"} 
      PUT /users(.:format)   {:controller=>"users", :action=>"create"} 
    new_user GET /users/new(.:format)  {:controller=>"users", :action=>"new"} 
    edit_user GET /users/:id/edit(.:format) {:controller=>"users", :action=>"edit"} 
     user GET /users/:id(.:format)  {:controller=>"users", :action=>"show"} 
      PUT /users/:id(.:format)  {:controller=>"users", :action=>"update"} 
      DELETE /users/:id(.:format)  {:controller=>"users", :action=>"destroy"} 

मैं समझता हूँ कि यह RESTful मार्ग के लिए सही, मैं सिर्फ अगर यह संभव है इन मार्गों द्वारा उपयोग किए गए HTTP तरीकों को बदलने के लिए सोच रहा हूँ नहीं होगा:

rake routes तो कुछ इस तरह उत्पन्न होगा ।

उत्तर

2

आप उपयोगकर्ताओं को बनाने के लिए PUT के साथ /users स्वीकार करने के लिए स्पष्ट रूप से एक मार्ग जोड़ सकते हैं लेकिन यह मौजूदा POST मार्ग को प्रतिस्थापित नहीं करेगा।

map.connect '/users(.:format)', 
    :controller => 'users', 
    :action => 'create', 
    :conditions => { :method => :put } 

तुम भी :member => { :create => :put } जोड़कर उपयोगकर्ता बनाने के लिए एक नया मार्ग जो इस तरह एक मार्ग का परिणाम देगा जोड़ सकते हैं:

create_users PUT /users/create(.:format) {:action=>"create", :controller=>"users"} 

लेकिन मुझे खुशी है कि पता नहीं है कि आप वास्तव में क्या कह रहे हैं !

+0

यह मूल रूप से मैंने जो कुछ किया है, उसके आसपास होने के लिए, उम्मीद कर रहा था कि मैं अतिरिक्त मार्ग के बिना दूर कर सकता हूं और map.resources के साथ बनाए गए मार्ग से उपयोग की गई विधि को बदल सकता हूं। –

1

परिभाषित

map.resources :users, :member =>{:create => :put} 

:users के लिए यह करना होगा।

config.action_controller.resources_path_names = { :new => "create", 
     :edit => "change" } 

कौन सा है आप हो सकता है क्या पूछ दिया: मैं की तरह कार्रवाई नियंत्रक में विधि के नाम के साथ की तरह एक डिफ़ॉल्ट ओवरराइड के बारे में निश्चित नहीं हूँ।

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