Jak utrzymać porządek w folderze views w sinatrze

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ść.

Może ktoś pomoże tonącemu początkującemu :smile:

w katalogu views, możesz utworzyć podkatalogi i w ten sposób pogrupować widoki, a wtedy w ruby podajesz np.:

erb 'directory/index'.to_sym

lub

erb :'directory/index'

dla szablonów erb, z tego co widze w opisach to sinatrze trzeba podać widok w postaci symbolu a nie stringa.

Dziala, bomba !!!

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 :slight_smile: