1

上面有一个 projects.html 文件。该文件可以成功运行,但是当我使用http://html2haml.heroku.com/将此 html 文件转换为 haml 文件时,haml 文件不起作用。

你能看出两个文件之间有什么区别吗?

项目.html.erb

<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js"></script>
<script src="http://code.highcharts.com/highcharts.js"></script>
<script src="http://code.highcharts.com/modules/exporting.js"></script>
<script type="text/javascript">
  $(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Sectoral Statistics'
            },
            tooltip: {
              pointFormat: '{series.name}: <b>{point.percentage}% - {point.y} proje</b> ',
              percentageDecimals: 1
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',
                        formatter: function() {
                            return '<b>'+ this.point.name +'</b>: '+ Math.round(this.percentage) +' % - '+ this.y +' proje';
                        }
                    }
                }
            },
            series: [{
                type: 'pie',
                name: 'Browser share',
                data: [
                    <% @results.each do |key,value| %>     
                      ['<%= key %>',<%= value %>,<%= value %>],
                    <% end %> 
                  ]
            }]
        });
    });

});
</script>

项目.html.haml

%script{:src => "http://ajax.googleapis.com/ajax/libs/jquery/1.6.1/jquery.min.js", :type => "text/javascript"}
%script{:src => "http://code.highcharts.com/highcharts.js"}
%script{:src => "http://code.highcharts.com/modules/exporting.js"}
:javascript
  $(function () {
    var chart;
    $(document).ready(function() {
        chart = new Highcharts.Chart({
            chart: {
                renderTo: 'container',
                plotBackgroundColor: null,
                plotBorderWidth: null,
                plotShadow: false
            },
            title: {
                text: 'Sectoral Statistics'
            },
            tooltip: {
              pointFormat: '{series.name}: {point.percentage}% - {point.y} proje ',
              percentageDecimals: 1
            },
            plotOptions: {
                pie: {
                    allowPointSelect: true,
                    cursor: 'pointer',
                    dataLabels: {
                        enabled: true,
                        color: '#000000',
                        connectorColor: '#000000',
                        formatter: function() {
                            return ''+ this.point.name +': '+ Math.round(this.percentage) +' % - '+ this.y +' proje';
                        }
                    }
                }
            },
            series: [{
                type: 'pie',
                name: 'Browser share',
                data: [
                     @results.each do |key,value|      
                      [' key ', value , value ],
                  ]
            }]
        });
    });

});
4

1 回答 1

1

我认为这是html2haml.

在您的 HTML 中,您的最后一个script标签看起来像这样(为简洁起见,我已将其删减):

<script type="text/javascript">
  $(function () {
  ...
});
</script>

第一行是缩进的,但最后一行不是。html2haml在确定如何缩进 javascript 时只查看第一行,这导致 Haml 看起来像:

:javascript
  $(function () {
  ...
});

最后一行 – });– 没有缩进。

要解决它,您应该在您的 HTML 或生成的 Haml 中修复缩进。

请注意,您应该注意另一个过滤器错误:javascript它认为在这种情况下你应该对那个没问题。

于 2013-02-02T15:37:12.707 回答