我正在使用带有长格式的twitter bootstrap 3,该格式分为五个标签,如果tab one
处于活动状态,则表示网址为domain.com/profiles/1/edit?tab=one
,我点击tab two
或者说如果我点击tab two
的提交按钮,我想将网址修改为domain.com/profiles/1/edit?tab=two
。我不知道,如果它可以做或不...可能是它可以通过JavaScript完成但我不知道如何。
感谢您的时间。
# Tabs nav
<ul class="nav nav-tabs" id="myTab">
<li class="<%= 'active' if params[:tab] == 'one' %>">
<a href="#one" data-toggle="tab">Tab one</a>
</li>
<li class="<%= 'active' if params[:tab] == 'two' %>">
<a href="#two" data-toggle="tab">Tab two</a>
</li>
<li class="<%= 'active' if params[:tab] == 'three' %>">
<a href="#three" data-toggle="tab">Tab three</a>
</li>
<li class="<%= 'active' if params[:tab] == 'four' %>">
<a href="#four" data-toggle="tab">Tab four</a>
</li>
<li class="<%= 'active' if params[:tab] == 'five' %>">
<a href="#five" data-toggle="tab">Tab five</a>
</li>
</ul>
# Tabs content
<div class="tab-content">
<div class="<%= if (params[:tab] == 'one' || !params[:tab])then 'tab-pane active' else 'tab-pane' end %>" id="one">
<%= form_for @profile do |f| %>
<%= f.label :fname, "First name" %>
<%= f.text_field :fname, :class => "form-control required" %>
<%= f.submit "Save", :class => "btn btn-primary" %>
<% end %>
</div> <!-- tab one ends -->
<div class="<%= if params[:tab] == 'two' then 'tab-pane active' else 'tab-pane' end %>" id="two">
<%= form_for @profile do |f| %>
<%= f.label :lname, "Last name" %>
<%= f.text_field :lname, :class => "form-control required" %>
<%= f.submit "Save", :class => "btn btn-primary" %>
<% end %>
</div> <!-- tab two ends -->
# same goes on
<!-- tab three ends -->
<!-- tab four ends -->
<!-- tab five ends -->
</div>
我的主要动机是,当我提交tab one
表格后,在保存页面后,它应显示tab one
有效。
当我提交tab two
表单时,在保存页面后,它应显示tab two
活动
答案 0 :(得分:0)
因此,要指定从控制器返回页面上的某个部分,您可以使用'anchor'(指定要返回的div ID),或者您可以自己创建URL。我通常会为每个标签指定一个id(这样我的url看起来更像是“/ edit#tab_one”,然后在我的控制器操作中,执行
redirect_to :edit, :anchor => "tab_one"
但是由于您正在执行更多查询类型的网址,因此您可以像这样制作网址路径:
url = edit_profile_path(@profile)
new_url = url + "?tab=one"
redirect_to new_url
最棘手的部分确实是知道哪个标签处于活动状态。所以,你可以传递这是每个标签形式中隐藏的参数:
f.hidden_field :tab, :value => "one" # and 'two' in the second tab, etc.
然后在你的控制器中执行此操作:
tab = params[:tab]
url = edit_profile_path(@profile)
new_url = url + "?tab=" + tab
redirect_to new_url