Rails 4 - 为了放置jQuery和bootstrap?

Mel*_*Mel 7 javascript jquery ruby-on-rails asset-pipeline twitter-bootstrap

我正在试图弄清楚如何在我的application.js中加载资产.

我在application.js中有这些必需的文件(以及其他文件).

//= require bootstrap-sprockets
//= require jquery
//= require jquery-ui
//= require jquery_ujs
Run Code Online (Sandbox Code Playgroud)

我的宝石文件有:

gem 'jquery-rails'
gem 'jquery-ui-rails'
Run Code Online (Sandbox Code Playgroud)

当bootstrap-sprockets在jQuery之前时,我的bootstrap下拉菜单(如下)工作正常.

<div class="row" style="margin-top:30px">
    <div class="col-md-3 col-md-offset-8">
        <% if policy(@project).show? %>    

            <div class="btn-group">
              <button type="button" style="color: black" class="btn btn-default dropdown-toggle" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false">
                STATUS: <%= text_for_state(@project.current_state) %> <span class="caret"></span>
              </button>
              <ul class="dropdown-menu">
                 <% if policy(@project).request_preapproval? %>    
                    <%= link_to "REQUEST APPROVAL", request_preapproval_project_path(@project), method: :put, :style=>"padding-left:20px; padding-right: 10px" %>
                <% end %>
                <li role="separator" class="divider"></li>
                <% if policy(@project).publish? %>    
                    <%= link_to "PUBLISH", publish_project_path(@project),  method: :put, :style=>"padding-left:20px; padding-right: 10px" %>
                <% end %>
                <li role="separator" class="divider"></li>

                <!-- <a href="#" class='btn btn-primary'>REQUEST MORE INFORMATION</a> -->
                <% if policy(@project).update? %>

                    <%= link_to "EDIT PROJECT", edit_project_path(@project), :style=>"padding-left:20px; padding-right: 10px" %>
                <% end %>

                 <li role="separator" class="divider"></li>
                <% if policy(@project).edit? %>    
                    <%= link_to "REMOVE", edit_project_path(@project), :style=>"padding-left:20px; padding-right: 10px" %>
                <% end %>
              </ul>
            </div>


        <% end %>
    </div>    
</div
Run Code Online (Sandbox Code Playgroud)

但是,在这种情况下,我在以下设置上的选项卡显示功能不起作用.我无法点击标签.如果我将jQuery移动到bootstrap-sprockets之上,它确实有效,但是下拉菜单会停止工作.

<div class="row">
                <div class="col-md-10 col-md-offset-1">
                    <div class="dp-tab-1">
                        <ul class="dp-tab-list row" id="myTab">
                            <li class="col-md-3 col-xs-6 active" >
                                <a href="#tab-guag-content-first">
                                    <span>MOTIVATION</span>
                                </a>
                            </li>
                            <li class="col-md-3 col-xs-6">
                                <a href="#tab-guag-content-second">
                                    <span>OBJECTIVES</span>
                                </a>
                            </li>
                            <li class="col-md-3 col-xs-6">
                                <a href="#tab-guag-content-third">
                                    <span>VISION</span>
                                </a>
                            </li>

                        </ul>

                        <div class="dp-tab-content tab-content">
                            <div class="tab-pane row fade in active" id="tab-guag-content-first">

                                <div class="col-md-12">
                                    <div class="tab-inner">

                                        <p class='medium-text'>
                                            <%= @project.motivation %>
                                        </p>
                                        <br/>
                                    </div>
                                </div>
                            </div>

                            <div class="tab-pane row fade" id="tab-guag-content-second">
                                <div class="col-md-12">
                                    <div class="tab-inner">
                                        <p class='medium-text'>
                                            <%= @project.objective %>
                                        </p>
                                        <br/>
                                    </div>
                                </div>
                                <div class="col-md-6">
                                    <img class='wow fadeInUp img-responsive' src="images/iphone-mockup.png" alt=""/>
                                </div>
                            </div>

                            <div class="tab-pane row fade" id="tab-guag-content-third">

                                <div class="col-md-12">
                                    <div class="tab-inner">
                                        <div class='services-content'>
                                            <strong>Long Term Research Vision</strong>
                                            <p class='medium-text'>
                                                <%= @long_term %>
                                            </p>
                                        </div>
                                        <div class='services-content'>
                                            <strong>Immediate Challenge</strong>    
                                            <p class='medium-text'>
                                                <%= @immediate_challenge %>
                                            </p>
                                        </div>    
                                        <br/>
                                        <!-- <a class='btn btn-primary'>READ MORE</a> -->
                                    </div>
                                </div>
                            </div>

                        </div>
                    </div>
            <!-
Run Code Online (Sandbox Code Playgroud)

当我在jQuery之前加载bootstrap的情况下尝试渲染页面时,我在chrome inspector控制台选项卡中收到此错误:

main.self-9711b4c….js?body=1:56 Uncaught TypeError: dp(...).tab is not a function(anonymous function) @ main.self-9711b4c….js?body=1:56dispatch @ jquery.self-660adc5….js?body=1:5227elemData.handle @ jquery.self-660adc5….js?body=1:4879
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题,以便我可以同时下拉和标签工作?

我的整个application.js是:

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require bootstrap-sprockets
//= require html.sortable
//= require disqus_rails
//= require moment
//= require bootstrap-datetimepicker
//= require pickers
//= require masonry.pkgd.min
//= require multipleFilterMasonry
//= require main
//= require hammer.min
//= require jquery.animate-enhanced.min
//= require jquery.countTo
//= require jquery.easing.1.3
//= require jquery.fitvids
//= require jquery.magnific-popup.min
//= require jquery.parallax-1.1.3
//= require jquery.properload
//= require jquery.shuffle.modernizr.min
//= require jquery.sudoSlider.min
//= require jquery.superslides.min
//= require rotaterator
//= require smoothscrolljs
//= require waypoints.min
//= require wow.min
//= require underscore
//= require gmaps/google
//= require markerclusterer
//= require infobox
//= require chosen-jquery
//= require cocoon
//= require imagesloaded.pkgd.min
//= require isotope.pkgd.min
//= require jquery.counterup.min
//= require jquery.pjax
//= require custom.js
//= require slider
//= require bootstrap-slider
//= require_tree .
Run Code Online (Sandbox Code Playgroud)

下一步尝试

我已经尝试了这篇文章中的所有建议:它们都不适用于我:https://github.com/twbs/bootstrap-sass/issues/714

Pra*_*han 3

工作完美。

//= require jquery
//= require jquery-ui 
//= require jquery_ujs
//= require bootstrap-sprockets
Run Code Online (Sandbox Code Playgroud)

您已在 jquery 之前定义了 bootstrap.js。但在每个应用程序中,您应该在顶部定义 jquery,因此它将首先加载。