2010-02-03 13 views
32

मैं एक से अधिक चयन बॉक्स रखने की कोशिश कर रहा हूं। चयन बॉक्स में डीबी में सभी स्टोर होंगे लेकिन उपयोगकर्ता जिनके साथ संबंधित है, उनका चयन किया जाएगा।रेल कई चयनित मानों के साथ टैग का चयन करें

मैं वहां आधा रास्ता हूं। मुझे एक चुनिंदा बॉक्स मिला जिसमें डेटाबेस में सभी स्टोर हैं। मैं उन लोगों का चयन करने में असमर्थ हूं जिनसे उपयोगकर्ता संबंधित है।

<%= select_tag 'stores[]', options_for_select(@stores.map {|s| [s.store_name, s.store_id]}, 
:selected => @user.stores.map {|j| [j.store_name, j.store_id]}), :multiple => true, :size => 
10 %> 

मुझे लगता है कि किसी उपयोगकर्ता का है भंडार के साथ एक नक्शा है:

मैं निम्नलिखित है। परीक्षण का एक उचित राशि के बाद

@user.stores 

उत्तर

49

और त्रुटि मेरे लिए काम किया है:: उस में है ऐसा करने options_from_collection_for_select सहायक विधि का उपयोग किया जाएगा का एक अन्य तरीका

<%=select_tag 'stores[]', options_for_select(
@stores.map {|s| [s.store_name, s.store_id]}, 
@user.stores.pluck(:id) 
), :multiple => true, :size => 10%> 
+4

FYi, बस एक छोटा स्पेससेव/अच्छा रूबी - आप @ user.stores.map {| j से चयनित विकल्प को छोटा कर सकते हैं। j.store_id} @ user.stores.map (&: store_id) – Squadrons

+1

धन्यवाद भाई! लेकिन मुझे लगता है कि आप 'pluck' –

11

। यह इस तरह कुछ दिखाई देगा:

<%= select_tag 'stores[]', options_from_collection_for_select(@stores, :store_id, :store_name, [4,5,6]), multiple: true, size: '10%' %> 
+0

के बजाय '@ user.store_ids' का उपयोग कर सकते हैं, मुझे नहीं पता कि यह सवाल कब पूछा गया था, लेकिन यह अनुमोदित उत्तर आईएमओ होना चाहिए। – gosukiwi

+1

मुझे पता चला कि नाम और आईडी को उलट दिया जाना चाहिए .. –

+0

मेरी खुशी @ yagudaev। मैं dissapointed था कि चयनित प्रविष्टियों की सूची आईडी होनी चाहिए और: store_id इसे लागू नहीं किया जा सकता है :( –

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