Я сейчас работаю над проектом ruby on rails. Я создал контроллер с именем «animals» и представление (index.html.erb) для действия индекса. Я не хочу включать файл javascript 'application'.

Итак, я создал animals.js

Содержимое файла

//= require jquery
//= require jquery_ujs
//= require turbolinks
//= require bootstrap-sprockets
//= animals.coffee

Я также добавил animals.js и animals.css в asset.rb

Rails.application.config.assets.precompile += %w( animals.js )
Rails.application.config.assets.precompile += %w( animals.css )

Мой index.html.erb содержит следующие строки

<%= stylesheet_link_tag 'animals', media: 'all', 'data-turbolinks-track' => true %>
<%= javascript_include_tag 'animals', 'data-turbolinks-track' => true %>

Когда я проверял исходный HTML-код, сгенерированный сервером, я увидел, что сценарии jquery не были включены на страницу. Это был просто файл animal.js.

<head>
   <meta name="viewport" content="width=device-width, initial-  scale=1.0">
   <title>Rails Omniauth</title>
   <meta name="description" content="Rails Omniauth">
   <link rel="stylesheet" media="all" href="/assets/animals.self-e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b5433a495991b7852b855.css?body=1" data-turbolinks-track="true">
   <script src="/assets/animals.self-1d93d37bf2f830ac42e82eb68e3bb0040ece5d23533a05bf77f7407fd59178d3.js?body=1" data-turbolinks-track="true"></script>

</head>

Любые предложения, почему эти сценарии были включены?

Спасибо.

0
Hilmi Yamcı 28 Май 2017 в 23:02

2 ответа

Лучший ответ

Я думаю, что ваша проблема может быть в том, что у вас есть два файла с одинаковым именем (но с разными расширениями). Поскольку помощники ресурсов Rails одинаково относятся к файлам coffescript и js, это неоднозначно:

<%= javascript_include_tag 'animals', 'data-turbolinks-track' => true %>

Какой файл он должен загрузить? Я предполагаю, что это займет первое в алфавитном порядке, который будет animals.coffee.

Чтобы решить эту проблему, переместите манифест звездочек в animals.coffee и удалите файл animals.js.

# app/assets/animals.coffee
#= require jquery
#= require jquery_ujs
#= require turbolinks
#= require bootstrap-sprockets
#= require_self
alert 'Hello World'
1
max 28 Май 2017 в 21:06

Вы можете удалить файл animals.coffee, а в файле application.js может потребоваться животные.js, чтобы ваш js-код был доступен в вашем проекте.

0
GM Ariful Islam Arif 21 Май 2019 в 04:03