88 votes

Rails imbriquée content_tag

Je vais essayer d'imbriquer des balises de contenu dans un helper personnalisé, pour créer quelque chose comme ceci:

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

Notez que l'entrée n'est pas associé à un formulaire, il sera sauvé grâce à javascript.

Voici l'aide (il va faire plus de juste afficher le code 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' %>

Toutefois, l'étiquette n'est pas affiché quand j'appelle à l'aide, seule l'entrée est affichée. Si ce commentaire la text_field_tag, l'étiquette est affichée.

Merci!

160voto

PeterWong Points 10070

Vous avez besoin d'un + pour réparer rapidement :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' %>

À l'intérieur du bloc de l' content_tag :div, seule la dernière chaîne retournée sera affiché.

57voto

lmika Points 451

Vous pouvez également utiliser la méthode concat méthode:

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

Source: l'Imbrication content_tag dans Rails 3

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X