2015-12-01 7 views
6

सुनिश्चित नहीं हैं कि क्या इसका कोई समाधान नहीं है, तो मैं कुछ गलत कर रहा हूँ, या इस सरल रूप या कोणीय के बीच टक्कर है, लेकिन:में simple_form करने कोणीय निर्देशों जोड़ना संग्रह इनपुट के लिए विकल्प का चयन किया टूटता रेल

.field 
    = f.input :role, collection: roles.map(&:name), selected: user.role.try(:name), include_blank: 'Select', required: true, input_html: { "ng-model" => "role" } 

renders (जो सही लगती है):

<select ng-model="role" class="select required" name="user[role]" id="user_role"> 
     <option value="">Select</option> 
     <option value="system">system</option> 
     <option selected="selected" value="fcm">fcm</option> 
     <option value="regulatory">regulatory</option> 
     <option value="operations">operations</option> 
     <option value="help_desk">help_desk</option> 
    </select> 

लेकिन चयनित मान 'चुनें' की include_blank मूल्य है। और हाँ, role उपयोगकर्ता पर सेट है।

उत्तर

3

ऐसा करने का कारण यह है कि कोणीय मॉडल काम करते हैं और इसके बारे में इसकी आवश्यकता होती है। अनिवार्य रूप से रूबी select को चुनिंदा बॉक्स के selected विकल्प को सही ढंग से चुनता है।

हालांकि, एक बार कोणीय भरी हुई है और इस select पर ng-model देखता है यह अपने मामले, role में मॉडल के मूल्य के वर्तमान चयनित विकल्प सेट करता है,।

इस प्रकार यदि आप इस select के लिए कोणीय मॉडल चाहते हैं, तो आपको उस मॉडल का प्रारंभिक मान सेट करने की आवश्यकता है।

.field 
= f.input :role, collection: roles.map(&:name), include_blank: 'Select', required: true, input_html: { "ng-model" => "role", "ng-init" => "role = #{user.role.try(:name)}" } 

ध्यान दें कि selected विकल्प पूरी तरह से हटा दिया गया है के बाद से इस कोणीय मॉडल है, जो गहरे लाल रंग का स्ट्रिंग प्रक्षेप का उपयोग कर कि मूल्य को आरंभ नहीं हो जाता द्वारा नियंत्रित किया जाएगा:

का अनुसरण करें।

-1

मैंने इस विशेष उदाहरण पर एक पल के लिए सोचा और मुझे पूरा यकीन नहीं है कि आपको परिणाम के साथ क्या होने की उम्मीद है।

हालांकि, मुझे लगता है कि के बजाय, आप डिफ़ॉल्ट मान के रूप में चयनित selected="selected" विशेषता वाले विकल्प के साथ विकल्प चाहते हैं, जो केवल एक खाली फ़ील्ड है। अगर मैं सही ढंग से समझ गया और यह मुद्दा है, इसका मतलब है कि कई फ़ील्ड हैं, जो गलत हो सकते हैं और हम (समुदाय) नहीं जानते कि आपने उन्हें कैसे पूरा किया, लेकिन मुझे लगता है कि मैंने समस्या के लिए खोला है ...;)

कोणीय निर्देश - सबसे पहले, मुझे नहीं पता कि आपने उदाहरण में किस कोणीय का उपयोग किया था (मुझे लगता है 1.X, क्योंकि इस पल से प्रश्न 6 महीने हैं)। AngularJS select निर्देश select तत्व के डिफ़ॉल्ट व्यवहार को ओवरराइड करता है और इसे थोड़ा सा बदल देता है।

मैंने परीक्षण के लिए simple example with Angular v1.0.1 तैयार किया और यह कुछ पहलुओं में सही तरीके से व्यवहार करता है। यदि आप ng-model="role" का उपयोग करते हैं और fcm (स्ट्रिंग) पर भूमिका निर्धारित करते हैं, जैसे $scope.role = 'fcm', कोणीय इस मान को सेट करने के लिए बाध्य है यदि उसे यह मिलेगा।

मैं भी परीक्षण किया है (AngularJS v1.0.1) यदि role सेट क्या नहीं है (अपरिभाषित), तो कोणीय भी पर रिक्त स्ट्रिंग मूल्य value="" की तरह बात है और यह विशेषता selected में देख सकते हैं और डिफ़ॉल्ट के रूप में सेट नहीं है। दूसरी तरफ, नवीनतम स्थिर AngularJS v1.5.6 selected विशेषता example with AngularJS v1.5.6 का समर्थन करता है, इसलिए यह समस्या का मूल हो सकता है।

खैर, इस के लिए समाधान सरल है: नवीनतम 1.x संस्करण के लिए

  • उन्नयन AngularJS या
  • ngSelected या ngInit/SO solution बजाय अगर संस्करण AngularJS आप का उपयोग करने के लिए विचार इस्तेमाल किया समर्थन है कि।
+0

रेल + कोणीय के साथ समाधान की तलाश में, एक चयन विकल्प बनाने की शुद्ध कोणीय विधि नहीं। इस समस्या के समाधान के लिए मेरा जवाब देखें। – Guy

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