Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/55.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby on rails ';语法错误,意外的关键字';在一条没有';不存在_Ruby On Rails_Haml - Fatal编程技术网

Ruby on rails ';语法错误,意外的关键字';在一条没有';不存在

Ruby on rails ';语法错误,意外的关键字';在一条没有';不存在,ruby-on-rails,haml,Ruby On Rails,Haml,我得到了一个错误:在一个haml模板上,我得到了,但是它提取的源代码行号已经超过了文件的末尾。我的代码是: %span * click a gamertag to see detailed medal stats .seperator{ :id => 'medal-stats', :style => 'margin: 20px 0 20px 0;' } - @sorted_players.each do |player| .medal_stats{ :id => "pl

我得到了一个错误:在一个haml模板上,我得到了,但是它提取的源代码行号已经超过了文件的末尾。我的代码是:

%span
* click a gamertag to see detailed medal stats

.seperator{ :id => 'medal-stats', :style => 'margin: 20px 0 20px 0;' }

- @sorted_players.each do |player|
  .medal_stats{ :id => "player_medals_#{Digest::MD5.hexdigest(player['Gamertag'])}" }
    %h3
      #{player['Gamertag']}'s Medals

  %table.team-table.table.table-bordered.table-striped.table-hover
    %thead
      %tr
        - @metadata['MedalsMetadata']['MedalClasses'].each do |medal_class|
          %td
            #{medal_class['Name']}

    %tbody
      - player['MedalStats'] = player['MedalStats'].sort_by { |medal| medal['TotalMedals'] }.reverse
        %tr
          - @metadata['MedalsMetadata']['MedalClasses'].each do |medal_class|
            %td
              - player['MedalStats'].each do |medal|
                - if medal['ClassId'] != medal_class['Id']
                  - next

                .medal-entry{ :style => "background-image: ('#{ X343ApiController.asset_url_generator_basic( medal['ImageUrl']['BaseUrl'],
                medal['ImageUrl']['AssetUrl'], 'medium') }');" }
                  #{medal['TotalMedals']}

问题是由以下线路引起的:

- player['MedalStats'] = player['MedalStats'].sort_by { |medal| medal['TotalMedals'] }.reverse
  %tr
%tr
不应缩进,您应将其向后移动(及其下方缩进的行)以与上面的
-player…
行对齐

要了解产生此错误的原因,我们需要了解Haml如何解析脚本。当脚本行下面缩进了一个部分时,Haml假定它是一个应该作为脚本的一部分传递的块,并生成相应的代码,包括生成的
end
语句。例如,本Haml:

- @things.each do |thing|
  %li= thing
生成的Ruby看起来像

 @things.each do |thing|
_hamlout.buffer << "<li>#{thing
}</li>\n";end;
生成以下Ruby:

 a_variable = just_set_the_var
_hamlout.buffer << "<li>#{a_variable
}</li>\n";end;
a\u变量=仅设置变量
_哈姆洛特缓冲区
 a_variable = just_set_the_var
_hamlout.buffer << "<li>#{a_variable
}</li>\n";end;