如何更改点击或提交表单上的网址

时间:2013-11-24 21:09:52

标签: javascript jquery ruby-on-rails ruby twitter-bootstrap

我正在使用带有长格式的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活动

1 个答案:

答案 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