Используя sinatra, я могу сказать ему, чтобы он отображал шаблон уценки, например, view / my_template.md, передавая имя шаблона следующим образом: markdown :my_template
.
Но я хочу сначала обработать его с помощью erb-обработки,поэтому мой файл называется view/my_template.md.erb
, но ... я также хочу, чтобы мой код работал в любом случае.Я хочу, чтобы он использовал файл .md.erb, если он есть, но в противном случае - файл .md.
Мне было интересно, есть ли стандартный способ сделать это в sinatra, вместо того, чтобы самому кодировать логику этого отступления.Следующие работы, но, кажется, не элегантны:
get '/route/to/my/page' do
begin
# Try to do erb processing into a string with the file view/my_template.md.erb
md_content = erb :my_template.md, :layout => false
rescue Errno::ENOENT
# Set it to use the view/my_template.md file instead
md_template = :my_template
end
# Either way we do the markdown rendering and use the erb layouts
markdown md_content || md_template, :layout_engine => :erb, :renderer => MARKDOWN_RENDERER
end
Rescue Errno :: ENOENT кажется не элегантным.Также код сбивает с толку, когда я указываю имя с помощью «.md» для того, чтобы он взял файл «.md.erb».