ruby on rails रेल- नेस्टेड content_tag




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

मैं इस तरह कुछ बनाने के लिए, एक कस्टम सहायक में सामग्री टैग घोंसला करने की कोशिश कर रहा हूं:

<div class="field">
   <label>A Label</label>
   <input class="medium new_value" size="20" type="text" name="value_name" />
</div>

ध्यान दें कि इनपुट किसी फ़ॉर्म से संबद्ध नहीं है, यह जावास्क्रिप्ट के माध्यम से सहेजा जाएगा।

यहां सहायक है (यह और अधिक करेगा तो बस एचटीएमएल प्रदर्शित करें):

module InputHelper
    def editable_input(label,name)
         content_tag :div, :class => "field" do
          content_tag :label,label
          text_field_tag name,'', :class => 'medium new_value'
         end
    end
end

<%= editable_input 'Year Founded', 'companyStartDate' %>

हालांकि, जब मैं सहायक को कॉल करता हूं तो लेबल प्रदर्शित नहीं होता है, केवल इनपुट प्रदर्शित होता है। अगर यह text_field_tag ​​पर टिप्पणी करता है, तो लेबल प्रदर्शित होता है।

धन्यवाद!


आपको त्वरित सुधार के लिए एक + की आवश्यकता है: डी

module InputHelper
  def editable_input(label,name)
    content_tag :div, :class => "field" do
      content_tag(:label,label) + # Note the + in this line
      text_field_tag(name,'', :class => 'medium new_value')
    end
  end
end

<%= editable_input 'Year Founded', 'companyStartDate' %>

Content_tag के ब्लॉक के अंदर content_tag :div , केवल अंतिम लौटाई गई स्ट्रिंग प्रदर्शित की जाएगी।


आप concat विधि का भी उपयोग कर सकते हैं:

module InputHelper
  def editable_input(label,name)
    content_tag :div, :class => "field" do
      concat(content_tag(:label,label))
      concat(text_field_tag(name,'', :class => 'medium new_value'))
    end
  end
end

स्रोत: रेल 3 में Nesting content_tag


मैं गहरी घोंसले के साथ मदद करने के लिए एक चर और concat का उपयोग करें।

def billing_address customer
  state_line = content_tag :div do
    concat(
      content_tag(:span, customer.BillAddress_City) + ' ' +
      content_tag(:span, customer.BillAddress_State) + ' ' +
      content_tag(:span, customer.BillAddress_PostalCode)
    )
  end
  content_tag :div do
    concat(
      content_tag(:div, customer.BillAddress_Addr1) +
      content_tag(:div, customer.BillAddress_Addr2) +
      content_tag(:div, customer.BillAddress_Addr3) +
      content_tag(:div, customer.BillAddress_Addr4) +
      content_tag(:div, state_line) +
      content_tag(:div, customer.BillAddress_Country) +
      content_tag(:div, customer.BillAddress_Note)
    )
  end
end




helpers