【问题标题】:Helper Ruby with HTML tags带有 HTML 标签的助手 Ruby
【发布时间】:2016-06-28 09:03:41
【问题描述】:

我正在尝试编写一个助手来创建一个可折叠的 Grop。 我转换了

<div class="panel panel-default">
<div class="panel-heading" role="tab" id="headingOne">
  <h4 class="panel-title">
    <a role="button" data-toggle="collapse" data-parent="#accordion" href="#collapseOne" aria-expanded="true" aria-controls="collapseOne">
      Collapsible Group Item #1
    </a>
  </h4>
</div>
<div id="collapseOne" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
  <div class="panel-body">
     text to answer
  </div>
</div>

  def faqbox(question, answer, number)
open :div, :class => "panel panel-default" do
  open :div, :class => "panel-heading", :role => "tab", :id => "heading#{number}" do
    open :h4, :class => "panel-title" do
      open :a, :role => "button", :data-toggle => "collapse", :data-parent => "#accordion", :href => "#collapseOne", :aria-expanded => "true", :aria-controls => "collapse#{number}" do
        "#{question}"
      end
    end
  end
end
open :div, :id => "collapse#{number}", :class => "panel-collapse collapse in", :role => "tabpanel", :aria-labelledby => "heading#{number}" do
  open :div, :class => "panel-body" do
    "#{answer}"
  end
end 
end

但它给了我“/getting-help 处的 TypeError 没有将 Symbol 隐式转换为 String"

我正在使用 ruby​​ 和中间人。我做了什么?

【问题讨论】:

    标签: ruby-on-rails ruby middleman


    【解决方案1】:

    请考虑使用部分而不是大量嵌套的open

    # _faqbox.html.erb
    
    <% heading = "heading#{number}"%>
    <% collapse ="collapse#{number}" %>
    
    <div class="panel panel-default">
      <div class="panel-heading" role="tab" id=<%= heading %>>
        <h4 class="panel-title">
          <a role="button" data-toggle="collapse" data-parent="#accordion" href="#<%= collapse %>" aria-expanded="true" aria-controls="<%= collapse %>">
            <%= question %>
          </a>
        </h4>
      </div>
    
      <div id="<%= collapse %>" class="panel-collapse collapse in" role="tabpanel" aria-labelledby="headingOne">
        <div class="panel-body">
           <%= answer %>
        </div>
      </div>
    </div>
    
    
    # some view
    <%= render partial: "faqbox", locals: {question: "foo", answer: "bar", number: 3} %>
    

    结果

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-10
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-02-08
      相关资源
      最近更新 更多