5
<% form_tag(:action=>'update', :id=>@album.id) do %> 

    Title: <%= text_field(:album, :title) %><br> 
    Artist: <%= text_field(:album, :artist) %><br> 
    Genre: <%= text_field(:album, :genre) %><br> 
    Release Date: <%= datetime_select(:album, :release_date, :start_year=>1960) %><br> 

    <%= submit_tag("Update") %> 

    <% end %> 

ऊपर दिए गए उदाहरण में, जो काम करता है, मुझे form_tag में @ album.id कहना था, लेकिन टेक्स्ट_फील्ड में मुझे कहना था: एल्बम। मैं इन्हें अपने विचारों में भ्रमित करता रहता हूं और कभी भी यह नहीं जानता कि @ चिह्न या प्रतीक का उपयोग करना है या नहीं। क्या कोई साधारण नियम है जो यह स्पष्ट कर सकता है कि कब उपयोग करना है?रेलवे व्यू में @ कब उपयोग करें और प्रतीक का उपयोग कब करें?

उत्तर

14

मैं एक पल के लिए यहाँ एक स्पर्शरेखा पर बंद जाते हैं, लेकिन मेरे साथ सहन जा रहा हूँ।

सबसे पहले, मैं सुझाव है कि आप RESTful routing का उपयोग के रूप में इस आप रेल बेहतर तरीके और संचालन इस तरह के ऐसा करने में सक्षम होने के रूप में से कुछ के लिए पहुँच देता है: आधार पर जाने

form_for(@album) do |f| 

और इस पर काम अपने इच्छित स्थान पर होने उस ऑब्जेक्ट की #new_record? स्थिति पर।

<%= f.text_field :title %> 

के बजाय:

<%= text_field :album, :title %> 

और अंत में क्यों एक की व्याख्या

दूसरे, नई form_for जगह में के साथ, आप ऐसा करके अपने विचार सूख कर सकेंगे चर रेल में इसे पहले एक @ चिह्न, जिसे "उदाहरण चर" ज्ञात के साथ परिभाषित किया गया है:

जब आप रेल में एक उदाहरण चर को परिभाषित यह है कि अंदर उपलब्ध है पूरे अनुरोध के लिए उदाहरण जहां "उदाहरण" ActionController और ActionView विधियों की श्रृंखला है जो सभी प्रतिपादन करने के लिए बुलाया जाता है और आपके लिए भी। इसे एक इंस्टेंस वैरिएबल के रूप में परिभाषित करने से यह आपके नियंत्रक में उपलब्ध होगा, जिसे आप नियंत्रक में परिभाषित करने के बाद कॉल करते हैं, आपके सहायक, आपके विचार और आपके नियंत्रकों, सहायकों या विचारों से प्रस्तुत आंशिक भाग।

असल में, यह पूरे अनुरोध के लिए चारों ओर है, लेकिन अपने मॉडल के अंदर सुलभ नहीं है।

अन्य चर विनिर्देश वर्ग चर (@@some_useful_thing = 1) और वैश्विक चर ($some_other_useful_thing = 1) और स्थिरांक (ALL_IN_UP_CASE = 1) हैं।

+0

धन्यवाद। मुझे आरईएसटी में देखना है। रेल 1.1.6 पर कुछ ट्यूटोरियल्स पर काम करना और अभी तक इसे प्राप्त नहीं हुआ है। तो, form_for के साथ, text_field (: एल्बम, शीर्षक) आवश्यक नहीं है क्योंकि: एल्बम नाम पहले से ही ज्ञात है क्योंकि f.text_field उस फ़ॉर्म का हिस्सा है जिसका आप संदर्भ करते हैं। F | मुझे लगता है कि मैंने इसे पा लिया है। धन्यवाद। –

6

एक चर नाम से पहले @ प्रतीक वर्तमान कक्षा में एक उदाहरण चर को दर्शाता है। : (कोलन) उपसर्ग एक प्रतीक बनाता है। अपने उदाहरण में, @album.idform_tag को @album उदाहरण चर के आईडी भेज रहा है, उस वस्तु से उचित डेटा के साथ प्रपत्र फ़ील्ड्स डेटाबेस से उस वस्तु में पढ़ सकते हैं और पॉप्युलेट करने के लिए form_tag की इजाजत दी। प्रतीकों आप text_field तरीकों में पास क्या form_tag वस्तु यह डेटाबेस से बनाता है पर विशिष्ट गुण का उपयोग करने के लिए करता है। इसके बाद यह उन गुणों के मानों को उनके द्वारा उत्पन्न पाठ फ़ील्ड में रखता है।

+0

तो टेक्स्ट_फील्ड को एल्बम के बारे में पता नहीं है क्योंकि यह form_tag से जुड़ा हुआ है जिसका पहले से ही इसका संदर्भ है। जैसा कि रडार कह रहा है, form_for इस पुनरावृत्ति का समाधान होगा। मुझे लगता है कि मैं अब यह समझ रहा हूँ। स्पष्टीकरण के लिए धन्यवाद। –

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