2011-04-08 17 views
7

उम्मीद है कि एक साधारण उत्तर; मैं मणि best_in_place का उपयोग कर रहा हूं और यह बहुत अच्छा काम करता है। मैं का उपयोग कर एक ड्रॉप डाउन मेनू बनाने का तरीका यह पता लगाने की कोशिश कर रहा हूँ:रेल 3 - best_in_place संपादन

:type => :select, :collection => [] 

मुझे क्या करना सक्षम होना चाहते हैं मेरे उपयोगकर्ता मॉडल से दर्ज किया गया है कि नामों की सूची में पास है।

कोई विचार यह कैसे करें? क्या मैं इसे संग्रह_ चयन के साथ मिश्रित कर सकता हूं?

उत्तर

8

:

[ [key, value], [key, value], [key, value], ... ] 

कहाँ कुंजीविकल्प मान और मूल्यविकल्प पाठ है: संग्रह पैरामीटर कुंजी/मान जोड़े की एक सरणी स्वीकार करता है।

ऑब्जेक्ट के अनुरूप मॉडल में इस सरणी को उत्पन्न करना सबसे अच्छा है जिसके लिए आप विकल्पों की सूची जेनरेट करना चाहते हैं, न कि आपके दृश्य में।

लगता है जैसे आपके पास best_in_place अप और चल रहा है, तो यहां एक प्रोजेक्ट शो पेज का एक सरल उदाहरण है, जहां आप किसी विशेष प्रोजेक्ट के लिए किसी विशेष प्रोजेक्ट के लिए निर्दिष्ट बॉक्स को बदलने के लिए best_in_place का उपयोग करना चाहते हैं।

## CONTROLLER 

# GET /projects/1 
# GET /projects/1.xml 
# GET /projects/1.json 
def show 
    @project = Project.find(params[:id]) 

    respond_to do |format| 
    format.html 
    format.xml { render :xml => @project.to_xml } 
    format.json { render :json => @project.as_json } 
    end 
end 


## MODELS 

class User 
    has_many :projects 

    def self.list_user_options 
    User.select("id, name").map {|x| [x.id, x.name] } 
    end 
end 

class Project 
    belongs_to :user 
end 


## VIEW (e.g. show.html.erb) 
## excerpt 

<p> 
    <b>Assigned to:</b> 
    <%= best_in_place @project, :user_id, :type => :select, :collection => User::list_user_options %> 
</p> 

# note :user_id and not :user 

ध्यान दें कि स्मृति से, best_in_place के मास्टर संस्करण एक का चयन करें बॉक्स के लिए ajax अनुरोध मूल्य या बदला नहीं गया है या नहीं भेजता है।

कुछ भी ध्यान में रखना; best_in_place मौजूदा रिकॉर्ड्स के "जगह में" संपादन के लिए है, नए नहीं बना रहा है (इसके लिए, नए पृष्ठ के लिए अपने _form आंशिक में संग्रह_ चयन करें)।

+0

धन्यवाद! यह काम कर रहा है ... आपके उदाहरण के अंत में आपके पास मौजूद कोड को याद करना आसान है ओएस एक्स –

+2

में क्रोम स्क्रॉलिंग के लिए धन्यवाद, अगर आपको यह मदद मिली तो आपको इसे अपने उत्तर के रूप में चुनना चाहिए। – marcamillion

+0

इस उत्तर के लिए धन्यवाद, एक सवाल यह है कि हम 'चयन' में 'रिक्त' विकल्प को कैसे चुन सकते हैं? यानी पूरी तरह से 'खाली' या 'कोई नहीं' या ऐसा कुछ। – marcamillion