ruby on rails - क्या कोई स्पष्ट, सरल शब्दों में मुझे संग्रह_ चयन कर सकता है?




ruby-on-rails ruby-on-rails-3 (2)

मैंने खुद को चुनिंदा टैग के क्रमपरिवर्तन पर कुछ समय बिताया है।

collection_select ऑब्जेक्ट्स के संग्रह से एक चुनिंदा टैग बनाता है। इसे ध्यान में रखते हुए,

object : object नाम। इसका उपयोग टैग का नाम उत्पन्न करने के लिए किया जाता है, और इसका उपयोग चयनित मान उत्पन्न करने के लिए किया जाता है। यह एक वास्तविक वस्तु या प्रतीक हो सकता है - बाद के मामले में, उस नाम का इंस्टेंस वैरिएबल ActionController के बाध्यकारी में देखा ActionController (यानी, :post आपके नियंत्रक में @post :post नामक एक इंस्टेंस var की @post करता है।)

method : method नाम। इसका उपयोग टैग का नाम उत्पन्न करने के लिए किया जाता है .. दूसरे शब्दों में, उस ऑब्जेक्ट की विशेषता जिसे आप चुनने से प्राप्त करने का प्रयास कर रहे हैं

collection : वस्तुओं का संग्रह

value_method : संग्रह में प्रत्येक ऑब्जेक्ट के लिए, इस विधि का उपयोग मूल्य के लिए किया जाता है

text_method : संग्रह में प्रत्येक ऑब्जेक्ट के लिए, इस विधि का उपयोग प्रदर्शन टेक्स्ट के लिए किया जाता है

वैकल्पिक पैरामीटर्स:

options : विकल्प जिन्हें आप पास कर सकते हैं। इन्हें शीर्षक विकल्पों के तहत here दस्तावेज किया गया है।

html_options : यहां जो कुछ भी पास किया गया है, उसे जेनरेट किए गए HTML टैग में जोड़ा जाता है। यदि आप कक्षा, आईडी या किसी अन्य विशेषता की आपूर्ति करना चाहते हैं, तो यह यहां जाता है।

आपका एसोसिएशन इस प्रकार लिखा जा सकता है:

collection_select(:user, :plan_ids, Plan.all, :id, :name, {:prompt => true, :multiple=>true })

form_for का उपयोग करने के संबंध में, फिर से बहुत सरल शब्दों में, form_for भीतर आने वाले सभी टैग के लिए, उदाहरण के लिए। f.text_field , आपको पहले ( object ) पैरामीटर की आपूर्ति करने की आवश्यकता नहीं है। यह form_for वाक्यविन्यास से लिया गया है।

मैं संग्रह_ चयन के लिए रेल एपीआई दस्तावेज़ों के माध्यम से जा रहा हूं और वे ईश्वर भयानक हैं।

शीर्षक यह है:

collection_select(object, method, collection, value_method, text_method, options = {}, html_options = {})

और यह एकमात्र नमूना कोड है जो वे देते हैं:

collection_select(:post, :author_id, Author.all, :id, :name_with_initial, :prompt => true)

क्या कोई सरल एसोसिएशन का उपयोग कर समझा सकता है (एक User है_मेनी Plans , और एक Plan User अंतर्गत है), मैं सिंटैक्स में क्या उपयोग करना चाहता हूं और क्यों?

संपादित करें 1: इसके अलावा, यह शानदार होगा अगर आपने समझाया कि यह form_helper या नियमित रूप से कैसे काम करता है। कल्पना कीजिए कि आप इसे वेब डेवलपर को समझा रहे हैं जो वेब विकास को समझता है, लेकिन रेलों के लिए 'अपेक्षाकृत नया' है। आप इसे कैसे समझाएंगे?


collection_select(
    :post, # field namespace 
    :author_id, # field name
    # result of these two params will be: <select name="post[author_id]">...

    # then you should specify some collection or array of rows.
    # It can be Author.where(..).order(..) or something like that. 
    # In your example it is:
    Author.all, 

    # then you should specify methods for generating options
    :id, # this is name of method that will be called for every row, result will be set as key
    :name_with_initial, # this is name of method that will be called for every row, result will be set as value

    # as a result, every option will be generated by the following rule: 
    # <option value=#{author.id}>#{author.name_with_initial}</option>
    # 'author' is an element in the collection or array

    :prompt => true # then you can specify some params. You can find them in the docs.
)

या आपका उदाहरण निम्नलिखित कोड के रूप में प्रदर्शित किया जा सकता है:

<select name="post[author_id]">
    <% Author.all.each do |author| %>
        <option value="<%= author.id %>"><%= author.name_with_initial %></option>
    <% end %>
</select>

यह FormBuilder में प्रलेखित नहीं है, लेकिन api.rubyonrails.org/classes/ActionView/Helpers/…