Wykonywanie kodu ruby w funkcji javascript

Mam taką funkcję JS (nie działającą):

$(function(){ $("#login-btn").popover({ placement: 'bottom', html: 'true', content : function() <%= render :partial => "shares/sample_partial" %> } }) $('html').click(function() { $('#close').popover('hide'); });
Moim celem jest to, aby w fragmencie ‘content’ otworzyć shares/sample_partial. Próbowałem na różne sposoby “odpalić” kod railsowy w tym kawału JS niestety bez efektu.

a) To jest w jakimś partialu, czy w statycznym pliku JS? Bo w tym drugim przypadku działać nie ma szans.
b) Masz tam syntax error w 5. linijce.

  1. Kod jest dodany pod koniec pliku *.haml
  2. Zdaję sobie z tego sprawę, na tym polega problem, że nie wiem jak mam tutaj załączyć partaila, bynajmniej nie upieram się przy

function() { <%= render :partial => "shares/sample_partial" %> }
próbowałem też np.
content : ’ <%= test %>’, ale w efekcie dostaję <%= test %>

HAML nie używa składni z <%= :foo %>. Spróbuj

= render :partial => "shares/sample_partial"

lub

#{render :partial => "shares/sample_partial"}

Zdaję sobie sprawę, że w hamlu nie używa się wspomnianej składni, ale problem leży gdzie indziej. Postaram się go jaśniej wytłumaczyć.

powyższy kod tylko z fragmentem:

content : 'test'

po kliknięciu na linka otwiera popover’a, w którym pokazuje napis test, w wypadku wpisania content : ‘test’, otwiera popovera i pokazuje test (tylko, że pogrubiony) - generalnie to co w content wrzuca do popovera i renderuje.

Mój problem polega na tym, że ja chciałbym dodać tam dynamiczną zawartość, partial jest przykładem, bo dla uproszczenia mogę tam spróbować wyświetlić zmienną @test, której przypiszę wartość w kontrolerze.
Bez względu na to czy stosuję się do składni z .haml czy .erb zawsze dostaję syntax error (błąd JS), np. dla kodu:

content : function() { console.log("klik"); = @test }
Według mnie problem jest natury JavaScript’owej, a nie Rails’owej.

A wiesz, że to, co renderujesz tam za pomocą Ruby’ego, też musi być w “javascriptowym” cudzysłowie, dokładnie tak jak uprzedni ‘test’?
A w ogóle, jeśli nie wiesz, czy problem jest w javascripcie, czy w rubym, renderującym “niepoprawnie” zawartość, to odpal sobie jakieś narzędzie w stylu Firebuga (np. w chrome narzędzia developerskie uzyskuje się po naciśnięciu F12) i sprawdź:
a) Czy javascript jest generowany poprawnie;
b) Czy w konsoli nie wyświetlają się javascriptowe błędy.

EDIT: Stosuj też, jeśli renderujesz coś w ten sposób w javascripcie, helper escape_javascript.

\
Nie wiem. Może w związku z tym wskażesz mi jak uzyskać tam dynamiczną treść ?

[quote=Lypa]A w ogóle, jeśli nie wiesz, czy problem jest w javascripcie, czy w rubym, renderującym “niepoprawnie” zawartość, to odpal sobie jakieś narzędzie w stylu Firebuga (np. w chrome narzędzia developerskie uzyskuje się po naciśnięciu F12) i sprawdź:
a) Czy javascript jest generowany poprawnie;
b) Czy w konsoli nie wyświetlają się javascriptowe błędy.[/quote]
a) Tak
b) Lypa przecież pisałem wcześniej, że jest błąd syntax error z JavaScriptu, wydawało mi się to jasne, że nie wziąłem go z powietrza tylko z konsoli…

\
Nie wiem. Może w związku z tym wskażesz mi jak uzyskać tam dynamiczną treść ?[/quote]
Spróbuj jakbyś wiedział. :wink:
Jak się dowiedziałem na szybko stąd (samemu HAML-a nie miałem jeszcze okazji stosować), możesz zrobić po prostu tak:

content : "#{escape_javascript @test}"

[quote=trojek][quote=Lypa]A w ogóle, jeśli nie wiesz, czy problem jest w javascripcie, czy w rubym, renderującym “niepoprawnie” zawartość, to odpal sobie jakieś narzędzie w stylu Firebuga (np. w chrome narzędzia developerskie uzyskuje się po naciśnięciu F12) i sprawdź:
a) Czy javascript jest generowany poprawnie;
b) Czy w konsoli nie wyświetlają się javascriptowe błędy.[/quote]
a) Tak
b) Lypa przecież pisałem wcześniej, że jest błąd syntax error z JavaScriptu, wydawało mi się to jasne, że nie wziąłem go z powietrza tylko z konsoli…[/quote]
Nie skojarzyłem, wybacz.

Dzięki Lypa! - o to właśnie mi chodziło.