2013-09-21 3 views
4

Я работаю на статическом веб-сайте (так что никакой реальной поддержки сервера), и я хотел бы включить небольшой тонкий фрагмент в другой, возможно, передав ему переменную.Включите тонкий файл в другой тонкий файл

Возможно ли это? В рельсах довольно легко, хотя метод render, но я понятия не имею, как это сделать на тонком (очевидно, load метод не работает для тонких).

ответ

1

Похоже, это может быть сделано таким образом:

Slim::Template.new('template.slim', optional_option_hash).render(scope) 

Найдены в тонком риом: https://github.com/slim-template/slim

+0

Не могли бы вы рассказать об этом ответе? Я пытаюсь сделать то же самое. Скажем, имя файла - index.slim, и я хочу включить в него частичный _variables.slim. Благодаря! – harrypujols

+0

Просто введите свой тонкий файл 'Slim :: Template.new ('_ variables.slim', optional_option_hash) .render (scope)' не так много, что я могу сказать об этом, «частичная» вещь есть только доступный в Rails, а не только в Slim. Если вы используете Rails, вам просто нужны «render» variables'' –

+0

Спасибо. Жаль, что он работает только в Rails. Я использовал Codekit для компиляции шаблонов Slim в статический html, но без этой возможности это бесполезно. Я буду использовать Джейд. – harrypujols

1

Я бы сильно reocommend проверить Middleman, если вы хотите построить статический сайт с помощью Сольют , Middleman заимствует общие вспомогательные функции, такие как render и partial от Padrino, такого как веб-фреймворк вроде Rails, но построенный с использованием более легкой Sinatra (все это отличное программное обеспечение).

Пойнты - это то, что вы можете настроить Middleman для использования тонких, а затем частичных (или макетов) гнезд произвольно. Если вы столкнулись с корягами, проверьте this stack overflow thread. Это довольно просто!

The Middleman docs объясняет, как использовать частичные here, и вы можете увидеть, как выглядит реальный пример в my gist for embedding an HTML5 video player.

+0

Большое спасибо, это кажется интересным, я закончил использование Grunt на данный момент и angularjs, исключив требование для 'render' и' partial'. Тем не менее, для сайтов без углового, это здорово, я проверю его прямо сейчас. –

6

Тонкий содержит Include плагин, который позволяет включать другие файлы непосредственно в файлах шаблонов во время компиляции:

require 'slim/include' 

include partial_name 

Documentations доступна здесь: https://github.com/slim-template/slim/blob/master/doc/include.md

Если вам необходимо включить файлы во время выполнения

Slim::Template.new("#{ name }.slim").render выполняет работу (https://github.com/slim-template/slim#include-helper).

+0

Хм, мне не нужно было добавлять это требование. Может быть, это потому, что рельсы делают это автоматически для меня. – Ievgen

0

Этот поток помог мне написать действительно помощника по частичной частичной части, которая дает вам функцию Rails-like partials. Я очень доволен этим!

#partials_helper.rb 
module PartialsHelper 
    def partial(name, path: '/partials', locals: {}) 
    Slim::Template.new("#{settings.views}#{path}/#{name}.slim").render(self, locals) 
    end 
end 

-

#app.rb 
require 'slim' 
require 'slim/include' 
require 'partials_helper' 
require 'other_helper_methods' 

class App < Sinatra::Base 
    helpers do 
    include PartialsHelper 
    include OtherHelperMethods 
    end 

    get '/' do 
    slim :home 
    end 
end 

-

#views/home.slim 
== partial :_hello_world, locals: { name: 'Andrew' } 

-

#views/partials/_hello_world.slim 
h1 Hello, World! Hello #{name}! 

я первоначально имел только .render({}, locals), что означало, что обертоны не имеет доступа к помощника методы, содержащиеся внутри OtherHelperMethods (но home.slim сделал). Переходя self в .render, в качестве первого аргумента, устанавливает, что (если вы хотите знать, что посмотреть документацию Tilt::Template #render.

С этим PartialsHelper, проходя местных жителей не является обязательным, как указать другой путь к частичной (относительно settings.views).

Надеюсь, вы получите как можно больше пользы от этого, чем я!

+0

. Цель заключалась в том, чтобы использовать тонкий для * статического веб-сайта *, вы используете помощника в синатрах, хотя это динамично: P –

+0

Хорошая точка - забыли об этом! – Andy

Смежные вопросы