在视图中分配Rails变量,需要建议

时间:2013-07-12 22:07:51

标签: ruby-on-rails variables twitter-bootstrap view

需要一些建议,我知道在视图中直接分配变量是一种不好的做法。但我发现只有一种方法可以实现bootstrap'nav-tab'。可能还有另一种方式吗?感谢

<div class="tabbable tabs-left">
  <ul class="nav nav-tabs">
    <% answer = [] %>  // Here it is..
    <% @questions.each_with_index do |question, index| %>
        <li class="<%= "active" if index == 0 %>">
          <a href="#pane<%= index + 1 %>" data-toggle="tab">
            <%= question.title %>
          </a>
        </li>
       <% answer << [index, question]%>
    <% end %>
  </ul>
  <div class="tab-content">
    <% answer.each do |i, a| %>
      <div id="pane<%= i + 1 %>" class="tab-pane <%= 'active' if i == 0 %>">
        <div class="links">
          <%= link_to '', edit_question_path(a), class: "icon-pencil" %>
          <%= link_to '', a, method: :delete, data: { confirm: 'Are you sure?' }, class: "icon-remove" %>
        </div>
        <%= raw a.content %>
      </div>
    <% end %>
  </div><!-- /.tab-content -->
</div><!-- /.tabbable -->

1 个答案:

答案 0 :(得分:2)

您可以在Controller中构建answer,其中包含:

@answer = []
@questions.each_with_index do |question, index|
  @answer << [index, question]
end

然后在@answer部分使用<div class="tab-content">,而不是answer

或者您可以在控制器中构建整个<ul class="nav nav-tabs">部分,因为您已经遍历@questions以构建@answer

@answer = []
@all_questions = ""
@questions.each_with_index do |question, index|
  @all_questions << "<li class=\"#{"active" if index == 0}\"><a href=\"#pane#{index + 1}\" data-toggle=\"tab\">#{question.name}</a></li>"
  @answer << [index, question]
end

然后将视图中的<ul class="nav nav-tabs">部分更改为:

<ul class="nav nav-tabs">
  <%= @all_questions %>
</ul>