1

テンプレートに次のヘルパーがあります。

= link_to t(:site_count, :count => account.subdomains.count ), "#", :rel => 'tooltip', :title => 'Sites', :class => :nofsite, :'data-placement' => "right", :'data-content' => account_sites_html(account), :'data-html' => true

account_sites_html(account) ヘルパーを使用してアカウント サイトとそのロケールを一覧表示する

私のヘルパーは html を正しく生成していますが、言語スパンの :class に問題があります:

 def account_sites_html(account)
    sites = account.subdomains.map {|subdomain| [subdomain.site[:hostname], subdomain.languages]}.uniq
    html = content_tag(:ul) do
        sites.collect do |site|
            content_tag(:li) do
                content_tag(:span, "#{site[0]}")
                site[1].collect do |language| 
                  content_tag(:span, "#{language}", :class => "babFlag-#{language}")
                end.join.html_safe
            end
        end.join.html_safe
    end
    return html.html_safe
  end

これは以下を生成します:

"<ul><li><span class=\"babFlag-en\">en</span><span class=\"babFlag-fr\">fr</span></li></ul>"

これはひどく表示されます....しかし、戻る前にコンソールでhtml変数をデバッグして変更すると:

"<ul><li><span class='babFlag-en'>en</span><span class='babFlag-fr'>fr</span></li></ul>"

それなら大丈夫です...私のクラス文字列の何が問題になっていますか?

4

1 に答える 1

0

Rails 3 では、concat を使用する必要があります

concat (content_tag(:span, "#{site[0]}"))

于 2013-01-07T12:58:04.517 に答える