Dodanie specyficznego kodu javascript tylko do pojedyńczego widoku

Problem początkującego, tak jak w temacie - muszę dodać specyficzny kod javascript który będzie działał jedynie w jednym widoku a nie w całym szablonie - jak mogę to najprościej zrobić ?

normalnie korzystam z assetpipeline tyle że przy ich pomocy podpinam sobie konkretne pliki styli i javascriptów pod layout a nie pod konkretny widok.

Ale javascript możesz umieścić w dowolnym miejscu na stronie html, zatem możesz go umieścić w widoku pomiędzy znacznikami

<script type="text/javascript"> i </script>

Możesz też ładować pliki per kontroler/akcja, np:

  1. usuwasz //= require_tree . z application.js
  2. dodajesz = include_javascript "controllers/#{controller_name}" w layouts/application.html
  3. dodajesz Twój plik javascripts/controllers/#{controller_name}.js

Albo se dodaj jakąś klasę/id w jakimś elemencie i se zrób if’a na początku javascriptu, jeśli jakiś element nie istnieje to se wróć i nie wykonuj rzeczy.

1 Like
1 Like

dziękuję wszystim za odpowiedź !

najprostszy sposób i chyba najbardziej elegancki na dodanie styli / javascriptów do konkretnego widoku:

  -content_for :head do
    =stylesheet_link_tag 'home/test'

a w layoucie mamy w sekcji head mamy:

= yield :head

A teraz tak serio, to co zrobiłeś nie jest, moim zdaniem, w 100% optymalne.

Mając jeden plik z Javascriptem/CSS’em, który jest ładnie skompilowany i zminifikowany, przeglądarka ściąga go raz i trzyma sobie zcache’owany. Twoje rozwiązanie sprawi, że skacząc po różnych stronach, przeglądarka będzie musiała dociągać co chwilę kawałki CSS’ów/JS’ów.

Polecam jednak starać trzymać się wszystko w jak najmniejszej liczbie plików.

1 Like