【问题标题】:Spree active menu大礼包活动菜单
【发布时间】:2017-10-18 15:01:15
【问题描述】:

我想达到什么目标?

我正在尝试向我的 spree/ruby on rails 应用程序添加一个活动菜单(突出显示菜单中的当前页面)。

我尝试了什么?

在做了一些研究后,我发现this 发布的问题非常有帮助,但正如您可能已经猜到了解决方案的实现,我 found 并没有得到我想要的结果。

我找到的解决方案是将以下代码添加到:

守则

application_helper.rb

module ApplicationHelper

 def active_class(link_path)
  current_page?(link_path) ? "active" : ""
 end

end

routes.rb

   root 'spree/home#home'

   get '/specs', to: 'spree/home#specs'
   get '/about', to: 'spree/home#about'
   get '/purchase', to: 'spree/home#purchase'
   get '/support', to: 'spree/home#support'

nav.html.erb

<li class="<%= active_class(root_path) %>">
<%= link_to "Home", root_path %>
</li>

<li class="<%= active_class(purchase_path) %>">
<%= link_to "Purchase", purchase_path %>
</li>

<li>
<%= link_to "About", purchase_path %>
</li>

<li class="<%= active_class(specs_path) %>">
<%= link_to "Technical Details", specs_path %>
</li>

<li class="<%= active_class(support_path) %>">
<%= link_to 

错误

但是现在,无论我去哪个页面,我都会收到以下错误:

NameError in Spree::Home#purchase
Showing /home/ubuntu/workspace/mystore/app/views/spree/shared/_nav_bar.html.erb where line #9 raised:

undefined local variable or method `purchase_path' for #<#<Class:0x007f35a30c6b80>:0x007f35a3642a00>
Extracted source (around line #9):


</li>

<li class="<%= active_class(purchase_path) %>">
<%= link_to "Purchase", purchase_path %>
</li>

我尝试更改了几个变量,但都无济于事

我的问题是

我如何在 Spree 中创建一个活动菜单(因为它是问题的根源)

【问题讨论】:

    标签: ruby-on-rails ruby spree


    【解决方案1】:

    请参阅下面的参考资料。我用的是激活而不是激活。之后你可以为激活的类设置样式

    <div class="collapse navbar-collapse" id="bs-example-navbar-collapse-1">
            <ul class="nav navbar-nav navbar-right" id="link-section">
                <li class="<%= 'activated' if current_page?(root_path) %>">
                    <a href="/">Home
                        <span class="sr-only">(current)</span>
                    </a>
                </li>
                <li class="<%= 'activated' if current_page?(new_user_registration_path) %>">
                    <%= link_to("Register", new_user_registration_path) unless user_signed_in? %>
                </li>
                <li class="<%= 'activated' if current_page?(pricing_path) %>">
                    <%= link_to("Pricing", pricing_path) %>
                </li>
                <li class="">
                    <% if current_user %>
                        <%= link_to("Store", shop_path(current_user.shop)) if current_user.shop.present? %>
                    <% end %>
                </li>
                <li class="<%= 'activated' if current_page?(new_user_session_path) %>">
                    <%= link_to("Login", new_user_session_path) unless user_signed_in? %>
                </li>
                <li class="<%= 'activated' if current_page?(dashboard_path) %>">
                    <%= link_to("Dashboard", dashboard_path) if user_signed_in? %>
                </li>
                <li>
    
                </li>
            </ul>
        </div>
    

    【讨论】:

    • 嗨拉宾,感谢您的回复!我试过应用你的方法但我一直收到同样的错误。 spree 似乎无法识别我添加到 application_helper.rb 的代码
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-27
    相关资源
    最近更新 更多