У меня есть ben пытается реализовать jQuery масонство, и он не работает.jQuery Масонство не рендеринг Rails 3 Один месяц рельсов
Это ошибка, и в консоли браузера это сказано.
Uncaught TypeError: Object [объект Object] не имеет какого-либо метода 'imagesLoaded'
Масонство в Vendor/assest/JavaScripts
Хорошо здесь мои файлы.
skills.js.coffee:
jQuery ->
$('#skills_page').imagesLoaded ->
$('#skills_page').masonry itemSelector: ".box"
index.html.haml
.container
#skills_page
= render @skills
= will_paginate @skills
custon.css.scss
.box {
background-color: #fff;
width: 214px;
margin: 5px;
float: left;
-webkit-box-shadow: 1px 100px 6px rgba(0, 0, 0, .375);
-moz-box-shadow: 1px 100px 6px rgba(0,0,0,.375);
box-shadow: 1px 1px 6px rgba(0, 0, 0, .375);
display: block;
}
.box img {
diplay: block;
width: 100%;
}
.description {
margin: 10px 0 5px;
}
_skill.html.haml
.box
.pin_container
- if skill.image.file?
.pin_image_bkg= image_tag(skill.image(:long))
- else
.pin_image_bkg= image_tag "214by70.png"
- if skill.user.profile_pic.file?
.pin_image= image_tag(skill.user.profile_pic(:medium), :style => "-webkit-border-top-left-radius: 5px;-webkit-border-top-right-radius: 5px;-moz-border-radius-topleft: 5px;-moz-border-radius-topright: 5px;-webkit-border-bottom-right-radius: 7px;-webkit-border-bottom-left-radius: 7px;-moz-border-radius-bottomright: 7px;-moz-border-radius-bottomleft: 7px;")
- else
.pin_image= image_tag("default_avatar.png", :style => "-webkit-border-top-left-radius: 5px;-webkit-border-top-right-radius: 5px;-moz-border-radius-topleft: 5px;-moz-border-radius-topright: 5px;-webkit-border-bottom-right-radius: 7px;-webkit-border-bottom-left-radius: 7px;-moz-border-radius-bottomright: 7px;-moz-border-radius-bottomleft: 7px;")
.pin_btn= link_to 'View', skill, :class => "btn"
.pin_subtitle
Help Package from
=link_to "#{skill.user.name}" , skill.user
.pin_title
=link_to "#{skill.title}", skill
.mini_info
-unless skill.work_hrs.blank?
.left
.mini_hours= skill.work_hrs
.left
.mini_title W
-unless skill.meeting_hrs.blank?
.left
.mini_hours= skill.meeting_hrs
.left
.mini_title M
.clear
Вот что мои скрипты выглядеть при просмотре исходного кода страницы :)
<script src="/assets/jquery.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery_ujs.js?body=1" type="text/javascript"></script>
<script src="/assets/jquery.masonry.min.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-transition.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-alert.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-modal.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-dropdown.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-scrollspy.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-tab.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-tooltip.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-popover.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-button.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-collapse.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-carousel.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-typeahead.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap/bootstrap-affix.js?body=1" type="text/javascript"></script>
<script src="/assets/twitter/bootstrap.js?body=1" type="text/javascript"></script>
<script src="/assets/applications.js?body=1" type="text/javascript"></script>
<script src="/assets/pages.js?body=1" type="text/javascript"></script>
<script src="/assets/password_resets.js?body=1" type="text/javascript"></script>
<script src="/assets/skills.js?body=1"
И вы поместили это в функцию готовности документа? Каков порядок ваших файлов, включенных в ваш заголовок? Если 'skills.js.coffee' не приходит ** после **' masonry.js', то вы не сможете получить к нему доступ. Кроме того, вы должны использовать '$ (document) .ready (function() {', чтобы гарантировать, что ничего не будет выполнено до того, как DOM будет доступен вам. Я не знаком с coffee.js, так что, возможно, это то, что 'jQuery ->' В любом случае, проверьте порядок включения. Также проверьте консоль на наличие ошибок. – Ohgodwhy
Спасибо @Ohgodwhy.Я проверил порядок js, и все выглядит нормально. Единственной консольной ошибкой является «Uncaught TypeError: Object [object Object] не имеет метода« imagesLoaded » –
Я отлично выполняю версию .js вместо .js.coffee, но, я думаю, я не знаю, как это сделать, do Я просто делаю файл в папке assets/javascript, например, skillstyle.js, затем помещаю '$ (document) .ready (function() {' в него? Я использую rails 3. Большое спасибо за ваш комментарий! –