Как остаться на той же вкладке (bootstrap) после создания (rails)? - PullRequest
0 голосов
/ 23 сентября 2019

Я использую следующий код, чтобы перенаправить туда, где находится форма после создания:

  if @book.save 
    redirect_to :home_index

У меня также есть вертикальная вкладка начальной загрузки, где все вкладки имеют одинаковый URL (home / index).На каждой вкладке есть форма для создания и список того, что было создано.

Итак, после создания на первой вкладке я возвращаюсь к первой вкладке.

Моя проблема в том, что когда я создаю на второй, третьей и т. Д. Вкладках, я также возвращаюсь на первую вкладку.Я хочу остаться на третьей вкладке.

Хотя есть некоторые вопросы по SO, связанные с этим, они все относятся к jQuery, PHP и тому подобному, и, зная только Rails, я нахожу их сложными в использовании.Как я могу сделать это с Rails?

Если это будет полезно, код вкладок из начальной загрузки:

<div class="row">
  <div class="col-3">
    <div class="nav flex-column nav-pills" id="v-pills-tab" role="tablist" aria-orientation="vertical">
      <a class="nav-link active" id="v-pills-home-tab" data-toggle="pill" href="#v-pills-home" role="tab" aria-controls="v-pills-home" aria-selected="true">Home</a>
      <a class="nav-link" id="v-pills-profile-tab" data-toggle="pill" href="#v-pills-profile" role="tab" aria-controls="v-pills-profile" aria-selected="false">Profile</a>
      <a class="nav-link" id="v-pills-messages-tab" data-toggle="pill" href="#v-pills-messages" role="tab" aria-controls="v-pills-messages" aria-selected="false">Messages</a>
      <a class="nav-link" id="v-pills-settings-tab" data-toggle="pill" href="#v-pills-settings" role="tab" aria-controls="v-pills-settings" aria-selected="false">Settings</a>
    </div>
  </div>
  <div class="col-9">
    <div class="tab-content" id="v-pills-tabContent">
      <div class="tab-pane fade show active" id="v-pills-home" role="tabpanel" aria-labelledby="v-pills-home-tab">...</div>
      <div class="tab-pane fade" id="v-pills-profile" role="tabpanel" aria-labelledby="v-pills-profile-tab">...</div>
      <div class="tab-pane fade" id="v-pills-messages" role="tabpanel" aria-labelledby="v-pills-messages-tab">...</div>
      <div class="tab-pane fade" id="v-pills-settings" role="tabpanel" aria-labelledby="v-pills-settings-tab">...</div>
    </div>
  </div>
</div>

1 Ответ

0 голосов
/ 23 сентября 2019

Я могу придумать несколько способов добиться этого:

  1. инициировать создание вкладки с помощью запроса ajax, затем ответить от контроллера с html для новой вкладки и вставить егов DOM, затем переключитесь на него на клиенте при получении ответа ajax.или ...

  2. javascript, вызываемый при загрузке страницы, открывал вкладку путем проверки строки запроса html.например, www.mypage.com?tab=foo_tab открывает foo_tab при загрузке страницы.В контроллере перенаправьте на страницу с нужной вкладкой, указанной в запросе после создания.

Я бы выбрал первый метод, т.к. пользовательский интерфейс будет лучше, чем новыйзагрузка страницы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...