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