1

上記のprojects.htmlファイルがあります。このファイルは正常に機能しますが、このhtmlファイルをhttp://html2haml.heroku.com/でhamlファイルに変換すると、hamlファイルが機能しません。

2つのファイルの違いがわかりますか?

projects.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>

projects.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>

最初の行はインデントされていますが、最後の行はインデントされていません。html2hamljavascript をインデントする方法を決定するときに最初の行のみを調べているため、次のような Haml が生成されます。

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

最後の行 – });– はインデントされていません。

これを回避するには、HTML または生成された Haml でインデントを修正する必要があります。

注意すべきフィルターには別のバグがあることに注意してください。:javascriptこの場合、あなたはそれで大丈夫だと思います。

于 2013-02-02T15:37:12.707 に答える