Witam zacząłem swoją pierwszą stronę w Sinatrze ale natknąłem się na problem z szybko rosnącą liczbą plików w folderze “views”.
Strona to rodzaj encyklopedii o systemie fabularny RPG i zawiera masę informacji. Przykład: istnieje 6 szkół magii a każdy z nich ma 6 poziomów. Co samo daje mi 36 plików do stworzenia. Myślalem pogrupować to w kilku folderach ale Sinatra zdaje się, widzeć tylko te w folderze “views”, nie wiem czy istnieje też jakiś sposób by zapisać kilka stron w jednym pliku, tak by sinatra wiedział do której części się odnieść.
A naprawdę musisz tworzyć te 36 plików? Nie prościej stworzyć jeden szablon który będziesz wypełniał danymi w zależności od url/paramsów z jakieś zaawansowanej bazy danych typu plik yamlowy?
Możesz podać obiekt klasy String, ale wtedy to on będzie wyrenderowany jako odpowiedź.
@Kask, stwórz sobie może jakąś prostą bazę danych przechowującą treści tych stron. Uprości Ci nie tylko widoki (zmiana np. nagłówka z h1 na h2 będzie wymagała zmiany tylko w jednym pliku), ale także routing:
get '/page/:name' do
# matches "GET /page/foo" and "GET /page/bar"
# params[:name] is 'foo' or 'bar'
@page = StaticPage.find(params[:name])
haml :'/static_pages/show'
end
@ekubal nie chce się spierać ale to co napisałeś nie ma sensu, bo @Kask pytał się jak wyrenderować szablon a nie stringa, i taką odpowiedź udzieliłem. Kłania się czytanie ze zrozumieniem
A czy ja to zanegowałem? Rozszerzyłem tylko Twoją wypowiedź odpowiadając nie tylko na pytanie “jak?” ale także “dlaczego?”. Tekst o czytaniu ze zrozumieniem - uwieeeeelbiam :).
Przeniesienie wszystkiego do bazy danych i wyświetlenie na szablonie jest możliwe, (uzywam Redisa) i rozumiem premie z tego płynące. Mam 2 ale:
Redis zdaje się nie obsługiwać polskich znaków. EDIT: Redis zdaje sie nie miec problemow z utf8.
Musiałbym zrobić program który mi to treść ładnie wpisze automatycznie do bazydanych. Co akurat jest motywacją do nauki więc można zaliczyć jako dodatkowy plus.
Ot i program do wpisywania do Redisa gotowy, dzięki za podsunięcie pomysłu