从子域重定向到主域导航栏下拉列表

时间:2016-03-02 04:39:24

标签: ruby-on-rails-4 navbar

我在这里找到了类似的解决方案Redirect to a div on a different page with smooth scrolling?但是我已经尝试申请我的项目并且没有工作。

所以回顾一下 - 我使用Bootstrap Navbar和ScrollTop平滑滚动并在主页面上正常工作。 (例如 - example.com,example.com /#dropdown1)。问题是当我转到子域(例如 - example.com/user)然后单击下拉导航栏菜单选项时,它只是应用'#dropdown1'到子域的末尾(例如 - example.com/user/#dropdown1)并且不重定向。

我可以将href更改为/#dropdown1,但顺畅滚动不再有效。无论是在主域还是子域,它都会跳转到div。以下相关代码 - 请帮助。

我在某个地方读过数据目标,所以为什么它在这里,但这没有用。

Application.html.erb

...
<div class="collapse navbar-collapse" id="bb-nav">
      <ul class="nav navbar-nav navbar-right">
        <li class="dropdown">
          <a href="#" class="dropdown-toggle" data-toggle="dropdown" role="button" aria-haspopup="true" aria-expanded="false">Sellers <span class="caret"></span></a>
          <ul class="dropdown-menu">
            <li><a href="#home" data-target="home">Home</a></li>
            <li><a href="#dd1" data-target="dd1">dd1</a></li>
            <li><a href="#dd2" data-target="dd2">dd2</a></li>
            <li><a href="#dd3" data-target="dd3">dd3/a></li>

          </ul>
        </li><!--/.dropdown-->
</ul>
</div> 
...       
<script type="text/javascript">
          var $root = $('html, body');
            $('.navbar-nav a').click(function() {
                var href = $.attr(this, 'href');
                $root.animate({
                    scrollTop: $(href).offset().top
                }, 500, function () {
                    window.location.hash = href;
                });
                return false;
            });
        </script>

1 个答案:

答案 0 :(得分:0)

这篇文章帮助我得到答案。 Rails 4 / Bootstrap 3: how to display a different navigation bar on different pages?

我创建了一个部分,它具有子域页面的备用导航栏,然后执行此操作:

布局/应用:

<body>
    <% if content_for?(:navbar) %>
        <%= yield(:navbar) %>
    <% else %>
       # code for default navbar
    <% end %>
</body>

然后在我所做的所有子域名页面视图中:

查看:

 <% content_for :navbar do %>
      <%= render '_navbar_partial_name' %>
 <% end %>

备用导航栏我刚刚创建了一个导致主页的按钮,当它登陆主页时,它自动将按钮转换为常规滚动下拉菜单。