Синатра + haml + jQuery, рендеринг haml из javascript / jquery - PullRequest
0 голосов
/ 18 ноября 2011

Я работаю над проектом, использующим sinatra с haml для шаблонов.Я хочу, чтобы иметь возможность добавлять некоторые из моих партиций хамла, используя JQuery.Я надеюсь добавить это в функцию js, запускаемую таким событием, как

....addEventListener(myWidget, 'click', function() {
    $('targetDiv').append(RenderHamlTempalte('/my/file/location/');
});

или

....addEventListener(myWidget, 'click', function() {
    $('targetDiv').append(RenderHamlTempalte('/my/file/location/', {options: here, options: here);
});

Я проверил несколько связанных проектов на github, но действительно могу 'не могу найти что-то, чтобы сделать это правильно.

спасибо за любую информацию

ОБНОВЛЕНИЕ:

вот что я закончил с

var url = '/update&my&div/' + param;
$('.my-div').load(url);

и затем в моем sinatra app.rb Iмогу просто вернуть мой хамл частичный

get ''/update&my&div/:params' do
    # do some stuff
    @make_variables_happen
    haml :my_partial
end

1 Ответ

1 голос
/ 18 ноября 2011

Один из способов сделать это - использовать инструмент, подобный следующему: https://github.com/uglyog/clientside-haml-js. Вам нужно будет обернуть ваши частичные элементы в <script type="text/haml-template" id="template_id"> YOUR PARTIAL GOES HERE </script> и добавить их где-нибудь на вашей html-странице (я обычно добавляю их в нижней частистраница).Затем вы можете ссылаться на них из JavaScript с помощью:

 var tmpl = haml.compileHaml('template_id');

, а затем вы можете передавать данные с помощью:

var html = tmpl({option1: value1, option1: value1});

или на основе вашего примера:

$('targetDiv').append(tmpl({option1: value1, option1: value1}));
...