По умолчанию, все JavaScript-файлы в папке app/assets/javascripts
импортируется в файл application.js
по заявлению require_tree .
//= require turbolinks
//= require_tree .
Это означает, все ваши файлы будут выполнены и доступны до тех пор, application.js
упоминается в основной раскладке приложения
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>
Чтобы обойти это, удалите //= require_tree .
заявление, а затем потребовать от каждого файла JavaScript отдельно по макетам просмотров, которые вы хотите использовать.
<%= javascript_include_tag 'employees', 'data-turbolinks-track' => true %>
Второй преступник вы можете иметь проблемы с является turbolinks
. Turbolinks быстрее выполняет следующие ссылки в вашем веб-приложении, используя конвейер активов Rails для кэширования активов, заменяя на области изменения.
К сожалению, это означает, что по умолчанию, как только файл javascript загружается для страницы, он остается кешированным (доступным) даже при загрузке другой страницы.
Несмотря на то, что у Turbolinks есть event hooks, которые вы можете использовать для дальнейшего руководства вашим javascript-файлом, когда их нужно уволить, а когда нет, эти, к сожалению, не позволяют нам указать точную страницу, на которой мы хотим запустить сценарий.
Если ты так много об этом факте, вы можете установить 'data-turbolinks-track' => false
@ где вы держите свой employee.js? –
@PraveenGeorge В активах/javascripts – marsrover
@marover: любой код javascript, который вы помещаете внутри вашего employee.js, будет выполняться под всеми представлениями, связанными с контроллером сотрудников. –