Rails указывает порядок загрузки файлов javascript?

В моем файле application.js у меня есть:

//= require jquery
//= require jquery_ujs
//= require underscore
//= require backbone
//= require_tree .
//
//= require .//community_app
//
//= require_tree ../templates/
//= require_tree .//models
//= require_tree .//collections
//= require_tree .//views
//= require_tree .//routers

но сгенерированный html не подчиняется этому порядку:

<head>
  <title>CommunityApp</title>
  <link href="/assets/application.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/communities.css?body=1" media="all" rel="stylesheet" type="text/css" />
<link href="/assets/home.css?body=1" media="all" rel="stylesheet" type="text/css" />
  <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/underscore.js?body=1" type="text/javascript"></script>
<script src="/assets/backbone.js?body=1" type="text/javascript"></script>
<script src="/assets/collections/communities.js?body=1" type="text/javascript"></script>
<script src="/assets/community_app.js?body=1" type="text/javascript"></script>
<script src="/assets/home.js?body=1" type="text/javascript"></script>
<script src="/assets/models/community.js?body=1" type="text/javascript"></script>
<script src="/assets/application.js?body=1" type="text/javascript"></script>
  <meta content="authenticity_token" name="csrf-param" />
<meta content="ktrLMDYSJaU/mmgmzfpxDfMin7OCXga4K5gVIJZHJUI=" name="csrf-token" />
</head>
<body>

Коллекции загружаются перед моделью, что дает мне ошибку во внешнем интерфейсе. Как я могу сделать так, чтобы он загружал файлы js определенным образом? Благодарность


person 0xSina    schedule 01.07.2012    source источник


Ответы (1)


У тебя все еще есть

//= require_tree .

Выше, который загружает все, по-видимому, в алфавитном порядке. Удалите это (очевидно, убедившись, что все требуется в другом месте), и все будет в порядке. Возможно, вы сможете сделать это последней строкой вашего application.js, но я не помню указанное поведение, когда два оператора в конечном итоге требуют одного и того же файла.

person Frederick Cheung    schedule 01.07.2012
comment
Спасибо за вклад. Есть ли способ сделать так, чтобы require_tree не загружалась в алфавитном порядке? Как правильно это сделать? - person 0xSina; 02.07.2012
comment
@ 0xSina: Правильный способ указать конкретный порядок - это указать порядок вручную, как вы (почти) делаете. - person mu is too short; 02.07.2012
comment
Я бы удалил `require_tree .` и потребовал бы вещи в желаемом порядке (возможно, используя require_tree в подпапках) - person Frederick Cheung; 02.07.2012
comment
Из руководств: обратите внимание, что семейство директив require предотвращает файлы не включаются дважды в вывод. Вы можете перечислить те, которые нуждаются в особом порядке, и все еще можете использовать require_tree . после тех. Работает для меня. - person Halil Özgür; 03.02.2014