2015-10-02 2 views
0

Когда я нажимаю ссылку «Учетная запись» на панели навигации, выпадающее меню не появляется. Что происходит, так это # ​​добавляется в конец URL-адреса, поэтому пользователи/1 становятся пользователями/1 #.Hartl 3-е изд. Раздел 8.2.3 выпадающий список не работает

Вопрос о выпадающем меню не задан здесь: ruby on rails chapter 8, 3rd Edition. About menu dropdown. Я попробовал несколько вариантов с моим файлом application.js, как я покажу ниже, и насколько мне известно, мои session_controller.rb и мои session_helper.rb соответствуют тому, что у Hartl.

Я использую Windows и Chrome.

Я включил «показать тень пользователя DOM» в консоли разработчика в Chrome, и я вижу html для выпадающего меню. Я не вижу сообщений об ошибках.

Я думаю, что есть какая-либо ошибка контроллера или некорректность версии Bootstrap/Sass/Rails. Я получил раскрывающийся список, чтобы работать в Hartl 2nd ed Chapter 8, но я не хочу откатывать свои драгоценные камни так далеко.

Моего application.js:

//= require jquery 
//= require jquery_ujs 
//= require bootstrap 
//= require turbolinks 
//= require_tree . 

Я также попытался

//= require jquery 
//= require bootstrap 
//= require jquery_ujs 
//= require turbolinks 
//= require_tree . 

И я попытался заменял бутстраповскую-звездочку для начальной загрузки.

sessions_helper.rb:

module SessionsHelper 
    def log_in(user) 
    session[:user_id] = user.id 
    end 

    def current_user 
    @current_user ||= User.find_by(id: session[:user_id]) 
    end 

    def logged_in? 
    !current_user.nil? 
    end 
end 

Я попытался заменить current_user.nil!? с current_user.nil? но это не сработало.

sessions_controller.rb

class SessionsController < ApplicationController 
    def new 
    end 

    def create 
    user = User.find_by(email: params[:session][:email].downcase) 
    if user && user.authenticate(params[:session][:password]) 
     log_in user 
     redirect_to user 
    else 
     flash.now[:danger] = 'Invalid email/password combination' 
     render 'new' 
    end 
    end 

    def destroy 
    end 
end 

Gemfile (часть)

gem 'rails', '4.2.2' 
gem 'bcrypt', '3.1.7' 
gem 'pg', '~> 0.18.3' 
gem 'bootstrap-sass', '3.2.0.0' 
gem 'sass-rails', '5.0.2' 
gem 'uglifier', '2.5.3' 
gem 'coffee-rails', '4.1.0' 
gem 'jquery-rails', '4.0.3' 
gem 'turbolinks', '2.3.0' 
gem 'jbuilder', '2.2.3' 

Custom.css.scss (первые 2 строки)

@import "bootstrap-sprockets"; 
@import "bootstrap"; 

И, наконец, _header.html.erb

<header class="navbar navbar-fixed-top navbar-inverse"> 
    <div class="container"> 
    <%= link_to "Birder's Life List App", root_path, id: "logo" %> 
    <nav> 
     <ul class="nav navbar-nav navbar-right"> 
     <li><%= link_to "Home", root_path %></li> 
     <li><%= link_to "Help", help_path %></li> 
      <% if logged_in? %> 
      <li><%= link_to "Users", '#' %></li> 
      <li class="dropdown"> 
      <a href="#" class="dropdown-toggle" data-toggle="dropdown"> 
       Account <b class="caret"></b> 
      </a> 
      <ul class="dropdown-menu"> 
       <li><%= link_to "Profile", current_user %></li> 
       <li><%= link_to "Settings", '#' %></li> 
       <li class="divider"></li> 
       <li> 
       <%= link_to "Log out", logout_path, method: "delete" %> 
       </li> 
      </ul> 
      </li> 
     <% else %> 
      <li><%= link_to "Log in", login_path %></li> 
     <% end %> 
     </ul> 
    </nav> 
    </div> 
</header> 

Заранее спасибо.

ответ

0

Я решил проблему. Я нашел этот пост: http://www.erikminkel.com/2013/09/01/twitter-bootstrap-3-in-a-rails-4-application/

и я побежал

bundle exec rake assets:precompile RAILS_ENV=development 

Затем я проверил мой application.js файл и обнаружил, что я каким-то образом изменил

//= require bootstrap 

в

//= bootstrap 

Я знаю, что у меня было это правильно, когда у меня были проблемы раньше, поэтому я не худею k это стало причиной проблемы с раскрывающимся списком.

В RailsGuide на Asset Pipeline упоминаются активы рейка: прекомпиляция в производственной среде. Я не смог получить

bin/rake assets:precompile 

для работы.

Смежные вопросы