创建(rails)后如何保持在同一选项卡(bootstrap)上?

时间:2019-09-23 18:16:46

标签: ruby-on-rails twitter-bootstrap bootstrap-4

我使用以下代码重定向到创建后表单所在的位置:

  if @book.save 
    redirect_to :home_index

我也有bootstrap垂直选项卡,其中所有选项卡共享相同的url(home / index)。每个选项卡上都有一个表单,用于创建并列出已创建的内容。

因此,在第一个选项卡上创建之后,我回到了第一个选项卡。

我的问题是,当我在第二,第三等选项卡上创建时,我也回到了第一个选项卡。我想停留在第三个标签上。

虽然与此相关的一些问题,但它们都是针对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 :(得分:0)

我可以想到几种方法来实现这一目标:

    使用ajax请求触发
  1. 触发标签创建,然后使用新标签的html从控制器进行响应,并将其插入DOM,然后在收到ajax响应时在客户端上切换至该标签。或...

  2. 页面加载的
  3. javascript通过检查html查询字符串来暴露选项卡。例如www.mypage.com?tab=foo_tab在页面加载时打开foo_tab。创建后,在控制器中,重定向到具有查询中指定的所需选项卡的页面。

我会选择第一种方法,b / c的用户体验会比新页面加载更好。