profondément imbriqués content_tag, concat et rails 3

Je suis frustré à l'aide de Rails 3.2 et faire un helper pour Bootstrap auxiliaires modaux. Je ne comprends pas quand vous en avez besoin concat par rapport à quand vous n'avez pas parfois je me retrouve avec des balises manquantes et parfois je me retrouve avec une table de hachage avec toutes les options entre avant et se terminant balises. Lorsque j'utilise concat sur le contenu de la balise avec une fin tout l'enfer se déchaîne. Tout ce que je veux faire est de reproduire ce code html:

<div id="stupid_modal" class="modal hide fade" tabindex="-1" data-width="760">
    <div class="modal-header">
        <button type="button" class="close" data-dismiss="modal" aria-hidden="true"><i class="fontello-icon-cancel-1"></i></button>
        <h4>Modal header</h4>
    </div>
    <div class="modal-body">
        <div class="page-header">
            <p>Test header 1 2 3.</p>
        </div>
        <div class="row-fluid">

           content here... blah blah

        </div>
    </div>
    <div class="modal-footer">
        <button type="button" data-dismiss="modal" class="btn">Close</button>
        <button type="button" class="btn btn-green">Save changes</button>
    </div>
</div>

Je ne peux pas pour la vie de me procurer le bouton dans le h4 dans la modale d'en-tête à travailler sur la droite. Ni puis-je obtenir de l'en-tête de page apparaissent dans le modal corps.

Mon helper ressemble à ceci:

module ModalHelper
def modal(css_id, header_text, hidden = true, options = {},&block)
class_text = "modal"
class_text += " hide fade" if hidden
content_tag(:div, :class => 'modal hide fade', :id => css_id, :style => ("display:none;" if hidden)) do 
concat modal_header(header_text)
concat modal_body(&block)
concat modal_footer
end
end
def modal_button(link_text, href)
modal_caller link_text, href, :button
end
def modal_link(link_text, href)
modal_caller link_text, href
end
private
def modal_caller(link_text, href, type = nil)
options = { :"data-toggle" => "modal" }
options.merge!({ :class => "btn" }) if type == :button
link_to link_text, "#" + href, options
end
def modal_header(header_text)
content_tag(:div, :class => 'modal-header') do
concat content_tag(:button,(content_tag(:i, :class => 'fontello-icon-cancel-1')),:class => 'close', :"data-dismiss" => 'modal', :"aria-hidden" => 'true')
concat content_tag(:h4, header_text)
end
end
def modal_body(page_header = "")
content_tag(:div, :class => 'modal-body') do
content_tag(:div, :class => 'page-header') do
concat content_tag(:p, page_header)
end
content_tag(:div, :class => 'row-fluid') do
yield
end
end     
end 
def modal_footer
content_tag(:div, :class => 'modal-footer') do
concat content_tag(:button, 'Close', type: "button", :class => 'btn btn-boo', :"data-dismiss" => 'modal')
concat content_tag(:button, 'Save', type: "button", class: 'btn btn-green')
end     
end 

fin

Et le lien ressemble à ceci:

<%= modal_link "New Stupid Modal", "stupid_modal" %>

Et le modal html ressemble à ceci:

<%= modal('stupid_modal', 'Shouldnt this work?', submit: true, tabindex: '-1') do %>
<% render 'stupid_modal_partials/stupid_modal' %>
<% end %>

La sortie est ceci:

<button aria-hidden="true" class="close" data-dismiss="modal"><i>{:class=&gt;&quot;fontello-icon-cancel-1&quot;}</i></button>

qui ressemble à ceci dans le code source de la page:

<i>{:class=>"fontello-icon-cancel-1"}</i>

Mise à jour:

changer modal_header œuvres:

def modal_header(header_text)
content_tag(:div, :class => 'modal-header') do
concat content_tag(:button,(content_tag(:i, "",:class => 'fontello-icon-cancel-1')),:class => 'close', :"data-dismiss" => 'modal', :"aria-hidden" => 'true')
concat content_tag(:h4, header_text)
end
end

Mais ce n'est pas le cas:

def modal_header(header_text)
content_tag(:div, :class => 'modal-header') do
concat content_tag(:button,:class => 'close', :"data-dismiss" => 'modal', :"aria-hidden" => 'true') do
concat content_tag(:i, "",:class => 'fontello-icon-cancel-1')
end
concat content_tag(:h4, header_text)
end
end

qui pose la question, wzup avec concat? et ai-je raté quelque chose, j'ai aussi essayé guillemets vides comme deuxième argument le bouton content_tag

Et j'ai essayé de le je balise à l'intérieur de la balise button est content_tag ne de fin au lieu de la ligne. pas d'amour.
Cet article explique l'utilisateur de concat et capture bien: thepugautomatic.com/2013/06/helpers

OriginalL'auteur Michael K Madison | 2013-04-09