2015-09-23 3 views
0

У меня возникли проблемы с загрузкой в ​​моем навигаторе. Навигация находится в основном приложении application.html.erb. Он работает после загрузки страницы, но как только я перейду на другую страницу, popover перестанет работать до тех пор, пока сайт не будет обновлен. Вот HTML/рубин:Bootstrap popover перестает работать на следующей странице

<button class = "btn navbar-btn btn-primary" id="popoverFriends" data-placement = "bottom" data-trigger="focus">Workplace Proximity Acquaintances <span class="badge"><%= @user.pending_friends.count %></span></button> 

<div id="popoverFriendsHiddenContent" style="display: none"> 
    <% unless @user.pending_friends.empty? %> 
    <% @user.pending_friends.each do |u| %> 
    <h3 class="text-center"><%= link_to u.username, user_path(u.id) %> 
     <%= link_to 'YAY!', user_friend_path(:user_id => current_user, :friend_id => u), class: "btn btn-warning", :method => :put, :confirm => 'Accept friend request! Are you sure?' %> 
     <%= link_to 'No.', user_friend_path(:user_id => current_user, :friend_id => u), class: "btn btn-danger", :method => :delete, :confirm => 'Reject friend request! Are you sure?' %> 
     <% end %> 
     <% else %> 
     None :(
     <% end %> 
    </h3> 
</div> 
<div id="popoverFriendsHiddenTitle" style="display: none"> 
    <h3>Your requests: </h3> 
</div> 
</div> 

И .js

$(document).ready(main) 
var main = function(){ 
$('[data-toggle="popover"]').popover() 
$("#popoverFriends").popover({ 
    html : true,   
    content: function() { 
     return $('#popoverFriendsHiddenContent').html(); 
    }, 
    title: function() { 
     return $('#popoverFriendsHiddenTitle').html(); 
    } 
}); 
}; 

Пожалуйста, дайте мне знать, если я что-то отсутствует, так что поповер остается настойчивый через сайт.

+0

Проверьте это: http://stackoverflow.com/questions/17881384/jquery-gets-loaded-only-on-page-refresh-in-rails-4-application –

ответ

1

У меня возникла эта проблема при запуске приложения для работы с ванилью Rails, которое по умолчанию указывало использование турбовинтовых устройств. Мне пришлось отключить turbolinks. Один из подходов к отключению функции является:

http://blog.steveklabnik.com/posts/2013-06-25-removing-turbolinks-from-rails-4

Эта страница гласит:

Удалить линию Gem 'turbolinks' от вашего Gemfile.

Удалите // = требуемые турбонауки из вашего приложения/assets/javascripts/application.js.

Удалите из вашего приложения/views/layouts/application.html.erb две пары «данные-турболинки-дорожки» => истинные хэш-ключи/значения.

Редактировать

Другой подход заключается в том, что принять Turbolinks может иметь некоторое значение в некоторых приложениях и вклиниться в его событийной модели. Прослушайте страницу события: измените и активируйте метод Popup popover, чтобы снова обновить вновь созданные элементы popover. Нечто подобное должно работать:

$(document).on('page:change', function(){ 
    $('[data-toggle="popover"]').popover(); 
}); 
+0

Или вы можете просто отключить turbolinks на ссылках, ведущих к странице, содержащей ваш popover. <% = link_to ", содержащая popover", popover_page, "data-no-turbolink": true%> – moeabdol

+0

@moeabdol - интересный подход. Я чувствую, что, как только я выборочно должен отключить функцию, столь важную для работы страниц, она, вероятно, запутается. Лично я никогда не заканчивал проблемы с turbolinks, тем более, что я делаю много рулей, которые дают данные и загрузочные вещи, и они просто не кажутся хорошими с отсутствием событий, происходящих из turbolinks. – Phil

+0

Я понимаю @Phil ... да, возможно, было бы проще и проще отключить турбонауки вообще, но вы должны иметь в виду, что турболинки здесь, чтобы остаться. У Rails 4 по умолчанию были турбонасосы, а Rails 5 будет следовать тем же шагам. Лучше привыкнуть к turbolinks :) – moeabdol

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