2015-11-13 10 views
9

Mam aplikację szynową 4.Szyny z zakładkami Bootstrap

Próbuję włączyć zakładki Bootstrap.

Czytając dokumentację bootstrap, mówi się, że jeden sposób na to nie obejmuje żadnego js. Próbowałem wszystkich podejść w dokumentach, ale nie udało mi się uzyskać żadnego z nich w mojej aplikacji.

Moja obecna próba jest:

<ul class="nav nav-tabs nav-justified"> 
        <li role="presentation" class="active"> <a href="#terms" aria-controls="terms" role="tab" data-toggle="tab">Terms</a></li> 
        <li role="presentation"> <a href="#privacy" aria-controls="privacy" role="tab" data-toggle="tab">Privacy</a></li> 
        <li role="presentation"> <a href="#licence" aria-controls="licence" role="tab" data-toggle="tab">Licence</a></li> 
        <li role="presentation"> <a href="#trust" aria-controls="trust" role="tab" data-toggle="tab">Trust</a></li> 
        <li role="presentation"> <a href="#reliance" aria-controls="reliance" role="tab" data-toggle="tab">Reliance</a></li> 
        <li role="presentation"> <a href="#pricing" aria-controls="pricing" role="tab" data-toggle="tab">Pricing</a></li> 

       </ul> 

<div class="tab-content"> 
       <div role="tabpanel" class="tab-pane active" id="terms"><%= render 'pages/legalpolicies/terms' %></div> 
       <div role="tabpanel" class="tab-pane" id="privacy"><%= render 'pages/legalpolicies/privacy' %></div> 

       <div role="tabpanel" class="tab-pane" id="licence"><%= render 'pages/legalpolicies/licence' %></div> 
       <div role="tabpanel" class="tab-pane" id="trust"><%= render 'pages/legalpolicies/trust' %></div> 

       <div role="tabpanel" class="tab-pane" id="reliance"><%= render 'pages/legalpolicies/reliance' %></div> 
       <div role="tabpanel" class="tab-pane" id="pricing"><%= render 'pages/legalpolicies/pricing' %></div> 

      </div> 

Efekt jest, aby dać mi pasek kart w górnej części strony. Karty są klikalne.

Jednak cała zawartość każdego z osobnych okien zawartości karty wyświetla się tylko na jednej dużej długiej stronie tekstu. Linki nie działają.

Czy ktoś może zobaczyć, co jest wymagane, aby to działało?

czytałem to oświadczenie w docs:

można aktywować kartę lub pigułka nawigację bez pisania JavaScript po prostu podając dane-przełączanie = „Tab” lub data-przełączanie = „pigułka” na elemencie.

Rozumiem, że oznacza to, że nie jest wymagany js.

Zresztą starałem dokonywania privacy.js plik w moim folderze JavaScripts i dodając:

$('#myTabs a').click(function (e) { 
    e.preventDefault() 
    $(this).tab('show') 
}) 

To nic nie zrobił.

Próbowałem przenieść go do mojego pliku application.js. Bez różnicy. Czy wymagane jest więcej js? To dziwne dla mnie, że robi to wszystko, ponieważ nie mam nic o nazwie #myTabs w html. Czy jest coś jeszcze, co jest potrzebne, aby to zadziałało?

plik Gem posiada:

gem 'sass-rails', '~> 5.0' 
gem 'bootstrap-sass', '~> 3.3.5' 

Arkusze stylów zawiera plik o nazwie: framework_and_overrides.css.css, która posiada:

@import "bootstrap-sprockets"; 
@import "bootstrap"; 
@import "font-awesome-sprockets"; 
@import "font-awesome"; 

folderu javascripts ma plik o nazwie application.js, który ma :

//= require underscore 
//= require gmaps/google 
//= require jquery 
//= require bootstrap-sprockets 
//= require jquery_ujs 
//= require_tree . 

Więc - po poradę w sprawie instalacji gem bootstrap-Sass (dla Ruby on Rails, I mad e zmiany w moich arkuszach stylów i plikach js.

szczególności, że klejnot mówi:

Then, remove all the *= require_self and *= require_tree . statements from the sass file. Instead, use @import to import Sass files. 

Do not use *= require in Sass or your other stylesheets will not be able to access the Bootstrap mixins or variables. 

Zmieniłem nazwę arkusza stylów aplikacja z application.css.scss do application.scss.

Zmieniłem zawartość tego pliku do:

@import "framework_and_overrides.css.scss"; 
@import "require_self"; 
@import "require_tree ."; 
*/ 

zmieniłem treść mojego framework_and_overrides.css.Plik SCSS obejmuje:

@import "bootstrap-sprockets"; 
@import "bootstrap"; 
@import "font-awesome-sprockets"; 
@import "font-awesome"; 
@import "bootstrap-slider"; 

Mój plik application.js posiada:

//= require underscore 
//= require gmaps/google 
//= require jquery 
//= require bootstrap-sprockets 
//= require bootstrap-slider 
//= require jquery_ujs 
//= require_tree . 

nie mieć pozytywny wpływ. Usuwa całą stylizację na moich stronach, usuwa wszystkie bootstrap stylizacji i ogólnie bałagan wszystkiego. Nie łączy linków zakładki z zawartością karty.

utknąłem -really próbując zrozumieć, jak korzystać z Bootstrap zakładki w Rails 4. Wszelkie porady będą bardzo mile widziane.

Kiedy zmienić go z powrotem, przynajmniej stylizacji odbija, ale wypustki js nie działają (w obu przypadkach).

kolejna próba:

Kiedy dodać import bootstrap na szczycie moich application.js:

@import "bootstrap"; 
//= require underscore 
//= require gmaps/google 
//= require jquery 
//= require bootstrap 
//= require bootstrap-sprockets 
//= require bootstrap-slider 
//= require jquery_ujs 
//= require_tree . 

zakładkach na górze strony w tym przykładzie pracy tak, że strona jest wskoczył do miejsca, w którym znajduje się początek odpowiedniej karty tekstowej. Nie tego chcę. Chcę częściowe zawierające ten tekst, aby wyświetlić na górze strony (oraz tekstu w każdej z pozostałych podszablonów być ukryte) - jak to pokazano na bootstrap przykład dla kart.

+0

należy wymagać tylko jednego pliku Bootstrap JS, nie obu. To może pomóc. Zobacz [docs] (https://github.com/twbs/bootstrap-sass). > Koła rozruchowe i bootstrap nie powinny być dołączone do aplikacji.js – vanburen

+0

Tak - dodałem tylko w "// = wymaganiu bootstrap" do pliku application.js, ponieważ nie mogłem wypróbować czegokolwiek innego. Usunąłem go, ale nadal mam ten sam problem. – Mel

+0

Musisz włączyć JavaScript, aby zainicjować karty: http://getbootstrap.com/javascript/#tabs-usage. To może przejść do pliku application.js lub do innego pliku .js w twoim katalogu '/ javascripts /'. –

Odpowiedz

2

czytam następujące w Bootstrap DOC:

Korzystanie navs paneli zakładce wymaga wypustki JavaScript plugin do zakładek z obszarami tabbable, należy użyć zakładki JavaScript wtyczki. Znaczniki będą również wymagać dodatkowej roli i atrybutów ARIA - więcej informacji na ten temat zawiera znacznik wtyczki .

więc prawdopodobnie trzeba dodać do application.js:

//= require bootstrap 

Łącznie:

//= require bootstrap-sprockets 

nie wystarczy:

bootstrap koła łańcuchowego zapewnia indywidualny Bootstrap Javascript pliki (alert.js lub dropdown.js, na przykład) , Natomiast bootstrap zapewnia łączone plik zawierający wszystkie Bootstrap JavaScripts

+0

Nie jesteś pewien, które dokumenty czytasz, ale docs mówią: Znacznik Możesz aktywować kartę lub nawigację tabletu bez pisania JavaScript, po prostu określając dane-przełącz = "tab" lub dane-przełącz = "pigułka" na elemencie . Dodanie klas nav i nav do zakładki ul zastosuje styl zakładki Bootstrap, a dodanie klas nav i nav-pills spowoduje zastosowanie stylizacji pigułek. – Mel

+0

Próbowałem wcześniej dodać zarówno bootstrap, jak i zębatki do application.js. Zobacz komentarze powyżej. To nie działa. Dokumenty do bootstrap sass mówią, żeby tego nie robić. Próbowałem jeszcze raz, aby sprawdzić i to nie działa – Mel

+0

Skopiowałem te cytaty z odpowiednio oficjalnej dokumentacji bootstrap (getbootstrap.com) i SASS Bootstrap GEM (na Github). –

1

Oto jeden sposób z dodatkowym stylizacji uczynienia wypustki wyglądać, co chcesz.

Dla połączeń szyn do pracy trzeba będzie zmodyfikować skrypt, który pokazuje ukrywa treści użyć turbolinks lub podobny.

 $(document).ready(function() { 
 
      $(".tabs-menu a").click(function(event) { 
 
       event.preventDefault(); 
 
       $(this).parent().addClass("current"); 
 
       $(this).parent().siblings().removeClass("current"); 
 
       var tab = $(this).attr("href"); 
 
       $(".tab-content").not(tab).css("display", "none"); 
 
       $(tab).fadeIn(); 
 
      }); 
 
     });
 body { 
 
     padding: 20px; 
 
     font-family: Arial, Helvetica, sans-serif; 
 
     line-height: 1.5; 
 
     font-size: 14px; 
 
     } 
 
     .tabs-menu { 
 
     height: 30px; 
 
     float: left; 
 
     clear: both; 
 
     } 
 
     .tabs-menu li { 
 
     height: 30px; 
 
     line-height: 30px; 
 
     float: left; 
 
     margin-right: 10px; 
 
     background-color: #ccc; 
 
     border-top: 1px solid #d4d4d1; 
 
     border-right: 1px solid #d4d4d1; 
 
     border-left: 1px solid #d4d4d1; 
 
     } 
 
     .tabs-menu li.current { 
 
     position: relative; 
 
     background-color: #fff; 
 
     border-bottom: 1px solid #fff; 
 
     z-index: 5; 
 
     } 
 
     .tabs-menu li a { 
 
     padding: 10px; 
 
     text-transform: uppercase; 
 
     color: #fff; 
 
     text-decoration: none; 
 
     } 
 
     .tabs-menu .current a { 
 
     color: #2e7da3; 
 
     } 
 
     .tab { 
 
     border: 1px solid #d4d4d1; 
 
     background-color: #fff; 
 
     float: left; 
 
     margin-bottom: 20px; 
 
     width: auto; 
 
     } 
 
     .tab-content { 
 
     width: 660px; 
 
     padding: 20px; 
 
     display: none; 
 
     } 
 
     #tab-1 { 
 
     display: block; 
 
     }
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.0/jquery.min.js"></script> 
 
<div id="tabs-container"> 
 
      <ul class="tabs-menu"> 
 
       <li class="current"><a href="#tab-1">Tab 1</a></li> 
 
       <li><a href="#tab-2">Tab 2</a></li> 
 
       <li><a href="#tab-3">Tab 3</a></li> 
 
       <li><a href="#tab-4">Tab 4</a></li> 
 
      </ul> 
 
      <div class="tab"> 
 
       <div id="tab-1" class="tab-content"> 
 
        <p>Lorem ipsum dolor sit amet, consectetur adipiscing elit. Aliquam sit amet purus urna. Proin dictum fringilla enim, sit amet suscipit dolor dictum in. Maecenas porttitor, est et malesuada congue, ligula elit fermentum massa, sit amet porta odio est at velit. Sed nec turpis neque. Fusce at mi felis, sed interdum tortor. Nullam pretium, est at congue mattis, nibh eros pharetra lectus, nec posuere libero dui consectetur arcu. Quisque convallis facilisis fermentum. Nam tincidunt, diam nec dictum mattis, nunc dolor ultrices ipsum, in mattis justo turpis nec ligula. Curabitur a ante mauris. Integer placerat imperdiet diam, facilisis pretium elit mollis pretium. Sed lobortis, eros non egestas suscipit, dui dui euismod enim, ac ultricies arcu risus at tellus. Donec imperdiet congue ligula, quis vulputate mauris ultrices non. Aliquam rhoncus, arcu a bibendum congue, augue risus tincidunt massa, vel vehicula diam dolor eget felis.</p> 
 
       </div> 
 
       <div id="tab-2" class="tab-content"> 
 
        <p>Donec semper dictum sem, quis pretium sem malesuada non. Proin venenatis orci vel nisl porta sollicitudin. Pellentesque sit amet massa et orci malesuada facilisis vel vel lectus. Etiam tristique volutpat auctor. Morbi nec massa eget sem ultricies fermentum id ut ligula. Praesent aliquet adipiscing dictum. Suspendisse dignissim dui tortor. Integer faucibus interdum justo, mattis commodo elit tempor id. Quisque ut orci orci, sit amet mattis nulla. Suspendisse quam diam, feugiat at ullamcorper eget, sagittis sed eros. Proin tortor tellus, pulvinar at imperdiet in, egestas sed nisl. Aenean tempor neque ut felis dignissim ac congue felis viverra. </p> 
 
       </div> 
 
       <div id="tab-3" class="tab-content"> 
 
        <p>Duis egestas fermentum ipsum et commodo. Proin bibendum consectetur elit, hendrerit porta mi dictum eu. Vestibulum adipiscing euismod laoreet. Vivamus lobortis tortor a odio consectetur pulvinar. Proin blandit ornare eros dictum fermentum. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Curabitur laoreet, ante aliquet molestie laoreet, lectus odio fringilla purus, id porttitor erat velit vitae mi. Nullam posuere nunc ut justo sollicitudin interdum. Donec suscipit eros nec leo condimentum fermentum. Nunc quis libero massa. Integer tempus laoreet lectus id interdum. Integer facilisis egestas dui at convallis. Praesent elementum nisl et erat iaculis a blandit ligula mollis. Vestibulum vitae risus dui, nec sagittis arcu. Nullam tortor enim, placerat quis eleifend in, viverra ac lacus. Ut aliquam sapien ut metus hendrerit auctor dapibus justo porta. </p> 
 
       </div> 
 
       <div id="tab-4" class="tab-content"> 
 
        <p>Proin sollicitudin tincidunt quam, in egestas dui tincidunt non. Maecenas tempus condimentum mi, sed convallis tortor iaculis eu. Cras dui dui, tempor quis tempor vitae, ullamcorper in justo. Integer et lorem diam. Quisque consequat lectus eget urna molestie pharetra. Cras risus lectus, lobortis sit amet imperdiet sit amet, eleifend a erat. Suspendisse vel luctus lectus. Sed ac arcu nisi, sit amet ornare tellus. Pellentesque nec augue a nibh pharetra scelerisque quis sit amet felis. Nullam at enim at lacus pretium iaculis sit amet vel nunc. Praesent sapien felis, tincidunt vitae blandit ut, mattis at diam. Suspendisse ac sapien eget eros venenatis tempor quis id odio. Donec lacus leo, tincidunt eget molestie at, pharetra cursus odio. </p> 
 
       </div> 
 
      </div> 
 
     </div>

+0

Witam Abs, nie, to nie jest styl lub format, który chcę. Chcę mieć stylizację, którą mam (kiedy js nie działa poprawnie). – Mel

+0

również - nie mogę używać linków turbo, ponieważ używam olarka – Mel

Powiązane problemy