Ruby on rails ';语法错误,意外的关键字';在一条没有';不存在
我得到了一个错误:在一个haml模板上,我得到了,但是它提取的源代码行号已经超过了文件的末尾。我的代码是: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
%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;