JS частицы внедряются в param: id (показывается локально, а не в производстве герою) - PullRequest
0 голосов
/ 22 марта 2019

У меня такая же проблема локально и при производстве, но, по крайней мере, на местном уровне появляются частицы JS.

Это мерзавец кода:

    <div class="jumbo" id="particles-js"></div>
        <div id="particles-js"></div>
        <script src="particles.js"></script>
...

Тогда я получаю эту же ошибку локально и производства:

Started GET "/listings/particles.js" for xxx at 2019-03-21 21:23:12 -0400
Processing by ListingsController#show as JS
  Parameters: {"id"=>"particles"}
...
ActiveRecord::RecordNotFound (can't find record with friendly id: "particles"):

Проблема не в удостоверении личности, потому что то же самое происходит с или без.

Теперь эта ошибка появляется не смотря ни на что, но локально, по крайней мере, частицы показывают.

Что с этим?

1 Ответ

0 голосов
/ 22 марта 2019

Похоже, что у вас есть ресурс с именем Listing, маршрут которого выглядит примерно так /listings/:id.

Когда эта страница отображается, html включает тег сценария, запрашивающий particles.js, который является относительным путем, поэтому браузер отправляет запрос на /listings/particles.js. Rails интерпретирует это как запрос к ресурсу Listing и ищет Listing с id из particles, который он не может найти.

Чтобы исправить это, у вас есть несколько вариантов:

  1. требуется particles.js в вашем файле application.js, добавив строку ниже. Это будет включать particles.js JavaScript на каждой странице вашего сайта (включая application.js)
//= require particles
  1. добавить javascript_include_tag и включить particles.js на одной странице html / erb. Это будет включать только particles.js в конкретном файле представления, но потребует от пользователя загрузить отдельный файл Javascript. Чтобы указать Rails Asset Pipeline включить этот файл, вам также нужно изменить config/initializers/assets.rb, чтобы он был предварительно скомпилирован На ваш взгляд:
<%= javascript_include_tag "particles" %>

В config/initializers/assets.rb:

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

Примечание. Если вы выполните любой из этих шагов, конвейер ресурсов Rails должен минимизировать файл для вас при развертывании в производство (так что вам не нужно использовать частицы.min.js).

...