【问题标题】:Sinatra + haml + jQuery, rendering haml from javascript/jquerySinatra + haml + jQuery,从 javascript/jquery 渲染haml
【发布时间】:2011-12-31 20:19:58
【问题描述】:

我正在开发一个使用 sinatra 和 haml 作为模板的项目。我希望能够使用 JQuery 附加一些我的 haml 部分。我希望将其添加到由这样的事件触发的 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 中我可以返回我的 haml 部分

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

【问题讨论】:

    标签: javascript jquery ruby sinatra haml


    【解决方案1】:

    一种方法是使用类似的工具: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}));
    

    【讨论】:

    • 感谢您的回复。我最终选择了一条稍微不同的路线,因为必须将我的 haml 部分包含在同一个文件中并不理想。我编辑了我的第一篇文章,以显示是否有人感兴趣。再次感谢您的提示
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-04-24
    • 2011-05-05
    • 1970-01-01
    相关资源
    最近更新 更多