... есть ли способ сделать это многоразовым, сделав дату динамической, чтобы я мог передать дату...
В маршруте Sinatra вы можете установить переменные, которые доступны в ваших тонких шаблонах:
маршруты.rb:
require 'sinatra'
require 'slim'
get '/' do
@day = 170000 #****HERE****
slim :index
end
просмотры/index.slim:
h2 This is views/index.slim:
div The day is: #{@day} #****HERE****
ul.fruit
li Apples
li Oranges
== slim :'components/_date'
просмотры/компоненты/_date.slim:
#postdate
.grid
.grid__cell.day =@day #****HERE*****
.grid__cell.month Jan
.grid__cell.year 2015
Я не очень понимаю, что вы имеете в виду:
передать дату из другого тонкого файла
Можете ли вы привести пример того, что вы хотите сделать?
Ответ на комментарий:
Согласно часто задаваемым вопросам о Sinatra, Как визуализировать частичные фрагменты?, если вы хотите визуализировать частичное и указать локальные переменные для частичного, вам необходимо установить гем:
$ gem install sinatra-partial
Вот пример приложения:
~/sinatra_projects$ tree slim_app/
slim_app/
├── models
├── public
│ ├── cool_stuff.html
│ └── imgs
├── routes.rb
└── views
├── components
│ └── _date.slim
├── index.slim
└── layout.slim
маршруты.rb:
require 'sinatra'
require 'slim'
#***NEW STUFF:
require 'sinatra/partial'
set :partial_template_engine, :slim
enable :partial_underscores
get '/' do
slim :index
end
просмотры/компоненты/index.slim:
h2 This is views/index.slim:
ul.fruit
li Apples
li Oranges
== partial\
:'components/date',
locals: {day: 1, month: 'Jan', year: 2015}
== partial\
:'components/date',
locals: {day: 25, month: 'Dec', year: 2014}
Если вы используете различные виды шаблонов, erb, haml, slim и т. д., вы можете установить тип при вызове partial():
partial(:"components/date", :template_engine => :slim, :locals => {...})
просмотры/компоненты/_date.slim:
#postdate
.grid
.grid__cell.day =day
.grid__cell.month =month
.grid__cell.year =year
просмотры/layout.slim:
doctype html
html
head
meta charset="utf-8"
title Test
body
h1 This is the Layout. Find me in /views/app_layout.slim
== yield
Итак, я предполагаю, что вы хотите сделать что-то вроде этого:
маршруты.rb:
get '/' do
@dates = [
{day: 1, month: 'Jan', year: 2015},
{day: 2, month: 'Feb', year: 2015},
{day: 3, month: 'Mar', year: 2015},
{day: 4, month: 'Apr', year: 2015},
]
slim :index
end
просмотры/index.slim:
h2 This is views/index.slim:
ul.fruit
li Apples
li Oranges
- @dates.each do |date|
== partial\
:'components/date',
locals: {day: date[:day], month: date[:month], year: date[:year]}
просмотры/компоненты/_date.slim:
#postdate
.grid
.grid__cell.day =day
.grid__cell.month =month
.grid__cell.year =year
...который производит:
Это Макет. Найдите меня в /views/app_layout.slim
Это просмотры/index.slim:
1
янв
2015
2
февраль
2015
3
март
2015
4
апрель
2015
person
7stud
schedule
18.01.2015