2011-10-09 9 views
10

सिर्फ मेरे ऐप पर ActiveAdmin जोड़ने के लिए आईडी के बजाय अनुरोध find_by का उपयोग कर ActiveAdmin, मैं क्रम में उपयोग करते हुए शो/संपादित करें/नष्ट कार्रवाई का कारण मेरी कड़ी आईडी के लिए, लेकिन उन नाम को इंगित नहीं करता है (एक समस्या मिल गया के लिए उपयोगकर्ता के लिए अधिक पठनीय होने के लिए)।कैसे कस्टम सभी कार्यों

संपादित करें लिंक: http://localhost:3000/admin/users/paul/edit (where paul is the user name)

उस मामले मैं पाने में: Couldn't find User with ID=paul

कारण निश्चित रूप से पॉल आईडी लेकिन उपयोगकर्ता नाम नहीं है

ActiveAdmin सही ढंग से की तरह मेरे लिंक बनाने।

कैसे मैं कस्टम find_by_name (पैरामीटर [: id]) का उपयोग करने ActiveAdmin कर सकते हैं/सभी कार्रवाई शो/संपादन के लिए अपने आवेदन में की तरह हटा दें।

अन्य मॉडल में मुझे एक तथाकथित "एसआईडी" मिला है जो एक जेनरेटेड नमकीन आईडी है और मैं find_by_sid (पैराम्स [: id]) के साथ-साथ अन्य मॉडलों के लिए भी उपयोग करना चाहता हूं।

धन्यवाद एक बहुत कुछ है।

चीयर्स ..

+0

इस संबंधित सवाल चेक आउट, स्वीकार किए जाते हैं तब उत्तर आपके समस्या का समाधान है: http://stackoverflow.com/questions/7684644/activerecordreadonlyrecord- – rdvdijk

+0

जब-activeadmin और अनुकूल-आईडी का उपयोग कर रहा है कि आज रात कोशिश करता हूँ, यह to_param आदेश की वजह से effectivelly है। कोशिश करने के बाद मैं आपको संपर्क में रखता हूं। –

उत्तर

12

यह एप्लिकेशन/व्यवस्थापक/user.rb में काम करेगा: यदि आप इस railscast का अनुसरण किया है

ActiveAdmin.register User do 
    before_filter :only => [:show, :edit, :update, :destroy] do 
     @user = User.find_by_name(params[:id]) 
     end 
end 
1

: http://railscasts.com/episodes/63-model-name-in-url-revised और कस्टम मार्गों है, तो आप active_admin ठीक कर सकते हैं एप्लिकेशन/व्यवस्थापक/user.rb में इस रखकर मार्गों:

before_filter :only => [:show, :edit, :update, :destroy] do 
    @user = User.find_by_slug!(params[:id]) 
end 

यह वास्तव में afiah द्वारा दिखाए गए एक के करीब है, बस थोड़ा अलग है।

20

यह करने के लिए एक क्लीनर तरीका नहीं है:

ActiveAdmin.register User do 
controller do 
    defaults :finder => :find_by_slug 
end 
end 
संबंधित मुद्दे