ydakuka
@ydakuka
Ruby developer

Как изменить влияние роутинга на coffeescript?

В файле config/routes.rb:
resource :quizzes do
  resource :questions
end

Также в assets/javascripts:
quizzes.coffee
question.coffee

Почему для страниц: (localhost:3000/quizzes/1), (localhost:3000/quizzes/1/questions) срабатывает код из 2х coffee-файлов, а не для каждой свой? Как этого избежать?
  • Вопрос задан
  • 308 просмотров
Решения вопроса 1
POS_troi
@POS_troi
СадоМазо Админ, флудер, троль.
Посмотрите в "исходники страницы", вы там увидите явные подгрузки всех ваших скриптов ибо у вас в application.js имеется такая инструкция //= require_tree . которая грубо говоря означает "всё что есть в /assets/javascripts/ вставить в application.html.erb" так как в свою очередь в application.html.erb у вас есть такая строка
<%= javascript_include_tag 'application', 'data-turbolinks-track' => true %>


Как вариант можете убрать //= require_tree . из application.js и явно указать какие сценарии нужно поддгружать по умолчанию а для отдельных страниц сделать так
в /views/layouts/application.html.erb
<head>
  ...
  <%= yield :header %>
  ...
</head>


в /views/quizzes/your_views_name.html.erb
<% content_for :header do %>
  <%= javascript_include_tag 'quizzes' %>  
<% end %>


Тогда при использовании этой вьюшки, в HEAD секцию всегда будет вставляться тег подключающий ваш JS(coffee) скрипт.

не претендую на правильность решения, подтянутся старшие товарищи и подтвердят или забракуют решение :)
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
premas
@premas
Full-stack web-developer
Использовать content_for
Ответ написан
Комментировать
viktorvsk
@viktorvsk
Потому что у вас в application.js есть строчка
//= require_tree
или же по отдельности
//= require quizzes
//= require questions


Научитесь открывать исходный код страницы и разберитесь, что такое asset pipeline
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы