Рендеринг частичных форм Rails с использованием вкладок Nav Bar в Bootstrap

Здравствуйте, я пытаюсь визуализировать частичные формы на странице с помощью вкладок.

У меня есть _form1.html.erb и _form2.html.erb

поэтому мой view.html.erb должен отображать формы на основе меню с вкладками

view.html.erb

  <ul class="nav nav-tabs">
           <li id ="one"class="active"><a href="#">form1</a></li>
           <li id="two"><a href="#">form2</a></li>
     </ul>
    <div id="one">
    <%= render partial: "form1" %>
    </div>
    <div id="two">
    <%= render partial: "form2" %>
    </div>

но это не работает, что я делаю не так? я получаю сообщение об ошибке Не могу найти проект с 'project_id'=form1

2 ответа

Решение

Что сработало для меня, так это рендеринг с использованием AJAX, модифицировавшего мой HTML-код

<ul class="nav nav-tabs">
           <li id ="one"class="active"><a href="#" data-toggle="tab">form1</a></li>
           <li id="two" data-toggle="tab"><a href="#">form2</a></li>
     </ul>
    <div class="tab-pane " id="one">
    <%= render partial: "form1" %>
    </div>
    <div class="tab-pane " id="two">
    <%= render partial: "form2" %>
    </div>

и создал новый index.js.erb и в этом

$("#one").html("<%= j (render 'form1') %>");
$("#two").html("<%= j (render 'form2') %>");

исправил проблему для меня

Вы должны убедиться, что вы уже импортировали требуемый файл JavaScript. Как вы можете видеть в документации, этот компонент основан на Javascript:

  • Активировать вкладку с помощью JS:
$('#myTab a').click(function (e) {
  e.preventDefault()
  $(this).tab('show')
})
  • Или data-attribute:
<!-- Nav tabs -->
<ul class="nav nav-tabs" role="tablist">
  <li class="active"><a href="#home" role="tab" data-toggle="tab">Home</a></li>
  <li><a href="#profile" role="tab" data-toggle="tab">Profile</a></li>
  <li><a href="#messages" role="tab" data-toggle="tab">Messages</a></li>
  <li><a href="#settings" role="tab" data-toggle="tab">Settings</a></li>
</ul>

<!-- Tab panes -->
<div class="tab-content">
  <div class="tab-pane active" id="home">...</div>
  <div class="tab-pane" id="profile">...</div>
  <div class="tab-pane" id="messages">...</div>
  <div class="tab-pane" id="settings">...</div>
</div>
Другие вопросы по тегам