Witam, mam problem z podpieciem/uruchomieniem HAML’a.
Posiadam Ruby Version 1.8.6, oraz doinstalowalem gema ‘haml’ [gem install haml, pisze ze Successfully installed for haml-1.7.1] , oraz do srodowiska RadRails zainstalowalem wtyczke do haml’a. Nastepnie do katalogu views/katalog/ dodaje nowy plik: test.haml. Dopisuje w nim linijke:
%h1 test
wchodze do przegladarki i wpisuje: http://127.0.0.1:3005/katalog/test, po czym zostaje mi zwrocony komunikat:
Unknown action
No action responded to test
wiec dopisuje mu z rozszezeniem: http://127.0.0.1:3005/katalog/test.haml, to znow blad:
Routing Error
no route found to match “/osoba/test.haml” with {:method=>:get}
Hmm na razie nie mam pomyslu jak sobie z tym poradzic, ma ktos jakis pomysl?
To chyba nie wina HAMLa, a Twojej aplikacji. Masz w kontrolerze ‘katalog’ na pewno zdefiniowaną metodę ‘test’?
Sprawdź czy jak zmienisz test.haml na test.rhtml to wyświetla to co powinien.
Spróbuj zainstalować haml jako plugin. Jeżeli korzystasz z gema to potrzebna jest konfiguracja Rails, żeby wiedziało jako renderować pliki z rozszerzeniem*.haml:
teraz nie działa? Taki sam komunikat?
tak, niestety to samo
haml --rails /sciezka/do/projektu/ror
po zrobieniu tego wyskoczyl mi komunikat: Haml plugin added to haml1
czyli jest ok, z tym ze teraz jest zupelnie inny komunikat po wpisaniu w url [http://127.0.0.1:3006/test/test,
troche to zmienilem teraz katalog testowy to test a haml to test.haml]
zawartosc controllera:
class TestController < ApplicationController
def test
end
end
zawartosc test.haml
%h1 test
blad:
Errno::ENOENT in Test#test
Showing app/views/test/test.rhtml where line # raised:
No such file or directory - ./script/…/config/…/app/views/test/test.rhtml
Pewnie był, ale dla pewności pytam. <skreśl>Ewidentnie nie widzi Ci pliku z rozszerzeniem .haml.</skreśl>* Spróbuj stworzyć widok app/views/test/test.rhtml (wypełnij go jakimś tekstem - np. “test” ) i zobacz co będzie.
*Choć może się mylę. Powinien rzucić ActionController::MissingTemplate chyba.
Nie chcę być niegrzeczny, ale zaczynam wiedzieć skutki popularności railsów. Co raz więcej na forum pojawia się osób, które chcą coś zdziałać z railsami bez uprzedniego przygotowania:
[quote]wchodze do przegladarki i wpisuje: http://127.0.0.1:3005/katalog/test, po czym zostaje mi zwrocony komunikat:
Unknown action
No action responded to test
wiec dopisuje mu z rozszezeniem: http://127.0.0.1:3005/katalog/test.haml, to znow blad:
Routing Error
no route found to match “/osoba/test.haml” with {:method=>:get}[/quote]
Hint: poczytaj jakikolwiek tutorial (a najlepiej całą książkę) o architekturze railsów, mvc i jego routing. Bez tego na prawdę ciężko. Jak słusznie Ci koledzy zwrócili uwagę - brakowało metody test w kontrolerze.
Jeśli nie jesteś pewien czy to działa robisz sobie coś takiego:
def test
render :text => 'works!'
end
I teraz sprawdzasz w przeglądarce czy zostanie wyświetlony ten napis.
Komunikaty, zrzuty stosu które dostajesz w przeglądarce, dobrze jest przeglądnąć zanim wrzuci się na forum. Nie ma sensu wrzucać całego stosu, bo to co jest poniżej Twojej aplikacji raczej jest ok i tam błędu nie szukamy. Tym bardziej, że dostałeś czytelny opis problemu:
Czyli railsy próbują wyrenderować plik .rhtml (my chcemy .haml więc coś tu nie gra).
Żeby nie było, że się mądrze itp. Oto jak w 3 prostych krokach uzyć haml w projekcie (pomimo tego, że wcześniej nie korzystałem z tego silnika szablonów, korzystając ze wskazówek w tym topicu zainstalowałem go w niecałą minutę).
instalujesz gem haml (gem install -y haml)
tworzysz nowy projekt rails (rails haml-test), wchodzisz do katalogu (cd haml-test) i odpalasz:
haml --rails .
tworzysz kontroler (ruby script/generate controller test test), zmieniasz rozszerzenie pliku app/views/test/test.rhtml na .haml i edytujesz ten plik
nie no, masz calkowita racje, lecz swoja “przygode” z RoRem chce rozpoczac odrazu od hamla, bo mnie bardzo zaciekawil, wiec 1, uruchomienie hamla, a potem nauka, na razie testuje rozne rzeczy z artykulow by zobaczyc co tak na prawde potrafi RoR
tego mi brakowalo i teraz haml dziala, jeszcze nie wiem czemu po napisaniu: “test test” wszystko zaskoczylo, no nic bede to badal, sorrki za zasmiecenie bledami tego co wywala RoR [ja czesto sie denerwuje jak ktos wrzuci litanie], lecz chcialem pokazac wszystko dokladnie co sie dzieje.
tego mi brakowalo i teraz haml dziala, jeszcze nie wiem czemu po napisaniu: “test test” wszystko zaskoczylo, no nic bede to badal, sorrki za zasmiecenie bledami tego co wywala RoR [ja czesto sie denerwuje jak ktos wrzuci litanie], lecz chcialem pokazac wszystko dokladnie co sie dzieje.[/quote]
Jeśli uruchomisz dany generator bez parametrów (ruby script/generate controller) dostaniesz opis parametrów i przykład użycia. W moim przypadku dla parametrów (test test) pierwszy jest nazwą kontrolera a kolejne nazwami akcji, które ten kontroler będzie mieć (od razu zostaną dodane przez generator). Co oczywiście nie wyklucza możliwości, że dodam swoje własne akcje.
Po uruchomieniu generatora wszystkie pliki, które zostaną utworzone, usunięte, zmodyfikowana są wypisywane na ekran. Na początek polecam zaglądnąć do takich plików i zobaczyć jak parametry wpłynęły na nazwę i zawartość pliku.