Czy istnieje jakiś sposób, aby szablon dziedziczył inny szablon? Nie używam Railsów.Czy mogę dziedziczyć szablon erb?
Odpowiedz
nie, nie można odziedziczyć szablonu erb - to nie jest klasa to jest po prostu plikiem
EDIT:..
Według @ komentarza Dana, wziąłem wyraz Django szablonu i dziedziczenie wygląda bardzo podobnie do Railsów content_for
. Jednak nie wiem jak go używać poza Railsami. Zajrzyj here w punktach 3.2 i 3.3, i here.
Nie sądzę, że w ogóle odpowiedziałeś na to pytanie. Jeśli masz doświadczenie z szablonami Django, zrozumiesz, o co on prosi. –
To, czego szukasz, to: partials i layouts. Możesz zdefiniować układ jako kontener dla strony, która ma elementy globalnego projektu (twój CSS i javascript zawiera nagłówki i stopki itp.) W tym widoku możesz yield
przejść do innego szablonu, a ten szablon może wyrenderować partials
.
To prawda w szynach, ale czy to prawda w erb, gdy nie w szynach? –
Nie. Railsy obsługują te metody za Ciebie. Możesz jednak spojrzeć na kod źródłowy rails dla ActionController, ponieważ zawiera on odpowiednie metody i możesz dołączyć wymagane moduły lub wdrożyć je samodzielnie. –
Tak, wiem o nich, ale niestety nie używam Rails. Jestem osobą z Sinatry :) – Geo
Bardzo podoba mi się również dziedziczenie szablonów django, ale nie jest to dostępne przynajmniej w przypadku sinatry.
sinatra book wyjaśnia, w jaki sposób można użyć layout.erb
zdefiniować standardowy układ strony:
wystarczy zdefiniować plik views/layout.erb
z czymś takim:
<html>
<head>..</head>
<body>
<%= yield %>
</body>
</html>
a następnie wywołać szablonu erb z erb :index
na przykład. Sinatra wyrenderuje oba szablony i uwzględni zawartość szablonu indeksu w wyniku renderowania layout.erb.
Czy istnieje sposób na zastąpienie więcej niż jednej części szablonu? Powiedz, aby określić zawartość elementu '
Najlepszym sposobem na to jest prawdopodobnie użycie https://github.com/sinatra/sinatra-contrib/blob/master/lib/sinatra/content_for.rb Następnie możesz po prostu użyć 'content_for: some_key', a następnie użyć'. yield_content: somekey' w twoim układzie – simao
Teraz istnieje szkielet Rango, pierwszy szkielet Ruby z dziedziczeniem szablonów, oraz z niego wyodrębniony klejnot ram template inheritance.
Czego oczekujesz po odziedziczeniu z innego szablonu? Jak można się spodziewać zastąpienia szablonu lub jego części? – molf
Podobnie jak inne szablony. Na przykład części mogą być ogólne dla wszystkich, jak stopka i nagłówek. – Geo
proszę wyjaśnić szczegółowo, co chcesz osiągnąć – johannes