jQuery dziala tylko gdy jest uzyte bezposrednio w pliku

Witam serdecznie mam pewien problem. Otóż zaczynam przygodę z jQuery którego używam wraz z Rails 4 i chciałbym mieć jeden plik w którym będę pisał skrypty. Na stronie natknąłem się na prosty skrypt:

$(function() { $( "#accordion" ).accordion(); });

który dla

[code] %h3
Section 1
%p
Mauris

    %h3
      Section 2
    %p
      Sed non urna[/code]

tworzy efekt zwijania testu. Skrypt działa o ile jest umieszczony w

%script $(function() { $( "#accordion" ).accordion(); });
na stronie na której go używam a ja chciałbym czytać np. z application.js. Posiadam odpowiednie gemy

gem 'jquery-rails' gem 'jquery-ui-rails'
w application.js odhaszowałem odpowiednie ustawienia

= require jquery = require jquery_ujs = require jquery.ui.all //= require twitter/bootstrap //= require turbolinks = require_tree .
w application.html.haml użyłem wszelkich znanych mi incudów aby załączyć /assets/javascripts/application.js próbowałem załączać je także w pliku w którym go używam tj. product.html.haml

= javascript_include_tag "application.js" = javascript_include_tag "application" = javascript_include_tag :defaults = javascript_include_tag :all
lecz skrypt działą tylko gdy jest umieszczony w %script na stronie na której go używam a ja nie chcę załączać każdorazowo całęgo potrzebnego kodu do pliku.
Proszę o pomoc z góry dziękuje i pozdrawiam.

[quote=metrox]w application.js odhaszowałem odpowiednie ustawienia

= require jquery = require jquery_ujs = require jquery.ui.all //= require twitter/bootstrap //= require turbolinks = require_tree .
[/quote]
To się zmieniło w Railsach 4? Nie wiem, bo nie używałem tej wersji, ale w 3.x to wywala błąd, powinno być wszędzie:

//=

Faktycznie, wcześniej gdy testowałem i mi nie wychodziło to stwierdziłem, że te fragmenty powinny być odkomentowane :wink:
Dzięki wielkie teraz wszystko bardzo fajnie działa.

mi na projekcie przeniesionym z rails 3 na 4 jquery przestaje działąc po uzyciu redirect_to

Pewnie turbolinki ci brużdżą. Spróbuj dodać gem ‘jquery-turbolinks’, a do application.js

//= require jquery.turbolinks

podziekowała :slight_smile:

addendum, spróbuj utworzyć inny plik a app/assets/javascripts, zawierający Twój kod (dyrektywa //require_tree . zrobi swoje).
application.js z zamysłu jest plikiem zawierającym listę plików do zaincludowania.

Jeśli bardzo potrzebujesz to dodaj //= require_self do application.js