rails que form_with form for ejemplos descargar curso ruby-on-rails ruby-on-rails-3 helpers

ruby on rails - que - Rails- nested content_tag



ruby on rails ejemplos (3)

Intento anidar etiquetas de contenido en una ayuda personalizada, para crear algo como esto:

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

Tenga en cuenta que la entrada no está asociada a un formulario, se guardará mediante javascript.

Aquí está el helper (hará más que solo mostrar el html):

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'' %>

Sin embargo, la etiqueta no se muestra cuando llamo al ayudante, solo se muestra la entrada. Si comenta el text_field_tag, entonces se muestra la etiqueta.

¡Gracias!


Necesita un + arreglo rápido: D

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'' %>

Dentro del bloque de content_tag :div , solo se mostrará la última cadena devuelta.


También puedes usar el método 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

Fuente: Nesting content_tag en Rails 3


Utilizo una variable y concat para ayudar con el anidamiento más profundo.

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