#ruby-on-rails #remotipart
#ruby-on-rails #remotipart
Вопрос:
Мне нужно условно использовать драгоценный камень remotipart. В [docs] [1] сказано, что просто добавьте его в application.js:
//= require jquery.remotipart
Но я не хочу, чтобы он включался в каждое отдельное представление, вместо этого я хочу включить его условно, однако, когда я пытаюсь:
<%= javascript_include_tag "jquery.remotipart" %>
Я получаю сообщение об ошибке. Как мне ссылаться на js, включенный как часть gem в целом, и remotipart js в частности?
Спасибо, Кевин
Комментарии:
1. «Но я не хочу, чтобы он включался в каждое отдельное представление, вместо этого я хочу включить его условно». Если вы используете turbolinks, это просто плохая идея, поскольку она создает постоянный сеанс браузера при загрузке многих страниц. Gemified assets также является устаревшей концепцией, если вы используете Rails 6 с webpacker. Вместо этого используйте пакеты yarn и оставьте идею запуска разных js на разных страницах.
Ответ №1:
Но я не хочу, чтобы он включался в каждое отдельное представление, вместо этого я хочу включить его условно, однако, когда я пытаюсь:
Что означает условно в этом контексте? Самым простым способом было бы
<%= javascript_include_tag "jquery.remotipart" if condition %>
Также вы могли бы использовать content_for
подобное в представлениях, в которые вы хотите его включить:
# in your view
<% content_for :js do %>
<%= javascript_include_tag "jquery.remotipart" %>
<% end %>
# in your layout.html.erb
<%= yield :script %>
https://apidock.com/rails/ActionView/Helpers/CaptureHelper/content_for
Если вы имели в виду, что получаете сообщение об ошибке, что файл JS не может быть найден, пожалуйста, обновите свой вопрос, указав, какую библиотеку (webpacker, sprockets) и версию Rails вы используете.