][/code]
I jak się domyślacie, chodzi mi o to, że podane tutaj dane były pobierane z bazy danych i tak spreparowany js dopiero wysyłany do przeglądarki.
Być może nie potrafiłem zadać właściwego pytania wujkowi google, jedyne co udało mi się uzyskać po wielu eksperymentach to wyplucie przez aplikację błędu:
undefined local variable or method ‘information’
w rekacji na moje wstawki próbujące wyciągnąć dane z bazy typu:
author:<%= information.author %>,
Pytanie brzmi: czy w ogóle jest to możliwe i jeśli tak, to z której strony to ugryźć.
Wydaje mi się, że masz na myśli respond_to :js w kontrolerze, ale z drugiej strony nie określiłeś, co chcesz zrobić z tym dalej - czy zagnieździć w html, czy też użyć do przetwarzania danych (jak choćby autocomplete z jQuery).
A podany błąd po prostu oznacza, że nie zadeklarowano wcześniej takiej zmiennej, zresztą sama nazwa na to wskazuje…
ja natomiast uważam, że chcesz gdzieś w widoku wygenerować kod javascriptowy i go wrzucić na stronę. Polecam w taki sposób (zakładam, że korzystasz z erba):
[code]
<%= yield(:head) %>
[/code]
a w widoku:
[code]<%= content_for(:head) do %>
var ImageInformation = [
Tak, wiem, nie znam jquery ani javascriptu.
Ten kod jest osadzony w html’u, i jeśli zostawię domyślne wbite na sztywno stringi typu ‘Jan Kowalski’ to wszystko ładnie działa, ale oczywiście skrypt w opisie zdjęcia wyświetla ‘Jana Kowalskiego’ jako string a nie danę pobraną z bazy.
Pytanie ciągle pozostaje to samo: czy mogę wstawiać w kod javascript kod ruby/rails?
Po wstawieniu w zwykłego html’a
<%= information.author %>
wyświetla się prawidłowo dana pobrana z bazy, czyli np. ‘Zygmunt Malinowski’
Rozumiem, że może wychodzić tutaj moja nieznajomość javascriptu i jquery, dlatego chciałbym, by mnie ktoś pokierował w odpowiednim kierunku, np stwierdzeniem:
“Można to zrobić, ale osadzenie danych pobranych z bazy w javascriptcie wygląda inaczej niż w zwykłym html’u, zainteresuj się gemem x/przeczytaj podstawy javascript-jquery/rails-jquery”
albo
“Nie można bezpośrednio zrobić tego jak chcesz, trzeba obejść to z wykorzystaniem XYZ”
albo
“Nie można bezpośrednio zrobić tego jak chcesz, trzeba najpierw zadeklarować i przypisać zmienne, odczytać dane, i dopiero przekazać do javascripta za pomocą XYZ”
Ok, dzięki za odpowiedzi, w trakcie pisania postu pojawiły się dodatkowo 2 podpowiedzi, jutro powalczę i powiem jak mi poszło
Jeszcze nie zdążyłem sprawdzić wszystkiego.
Cały kod do wyświetlania jest zawarty w js pluginu, to ładowane jest w strony
Po załadowaniu strony wyświetla się obrazek z wypisanymi danymi, w nie ma kodu.
I tak bym chciał to zostawić, bo za słaby jestem w js żeby wyciagać teraz z niego zaszyty gdzieś html w osobny plik html.erb i zmienić działanie skryptu.
Pytanie ciągle więc pozostaje to samo: czy mogę to osiągnąć nie wychodząc z poziomu kodu js pluginu
Rozwiązanie z :
<%= yield(:head) %>
nie działa w moim przypadku, zdążyłem sprawdzić wczoraj, ciągle mam błąd undefined local variable or method
[quote=gotar]w haml mozesz wlaczyc tryb erb i tez cos takiego stworzyc strasznego
:erb
alert(’<%= @post.id %>’)
np[/quote]
O, zmienił mi się komunikat błędu :
undefined method `author’ for nil:NilClass
OK.
Sprawa rozwiązana, dziękuję wszystkim za odpowiedzi, szczególnie koledze krzyzak i debosh, których to podpowiedzi uzmysłowiły mi moje błędy i nakierowały na rozwiązanie i uzmysłowiły konieczność lekkiej przebudowy layoutu strony i niewielkich zmian które musiałem dokonać w pluginie.
Generalnie musiałem wyciągnąć fragmenty tego js z i wstawić do , wtedy dopiero zaczęło to zachowywać się przewidywalne.
W każdym bądź razie w końcu to działa tak jak chciałem
A tak, Tobie też dziękuję. Plugin składał się z kilku plików js i niefrasobliwie zmieniłem nazwę jednego z nich i zapominałem zmienić odwołania do niego.
Stąd wylazł ten nil.
Teraz się wyspałem, 3 kawy + wasze porady i jest dobrze