2013-04-20 21 views
2

我得到錯誤:syntax error, unexpected keyword_ensure, expecting $end我有一個haml模板,但是提取的源代碼行號超出了文件的結尾。我的代碼是:'語法錯誤,意外的關鍵字_ensure'在不存在的線上

- player['MedalStats'] = player['MedalStats'].sort_by { |medal| medal['TotalMedals'] }.reverse 
    %tr 

%tr不應該被縮進,你應該把它搬回(下縮進的線)是在:

%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']} 

回答

1

問題是由線路引起的與上面的-player ...一致。

要知道爲什麼會創建這樣的錯誤,我們需要看看Haml的如何解析腳本。當腳本線具有下縮進一個部分,Haml的假定它是應作爲腳本的一部分被傳遞的塊,並且產生適當的代碼包括生成end語句。例如,這Haml的:

- @things.each do |thing| 
    %li= thing 

生成紅寶石,看起來像

@things.each do |thing| 
_hamlout.buffer << "<li>#{thing 
}</li>\n";end; 

第一行(@things.each do |thing|)被複制從Haml的源直接的,而是由Haml的產生的對應end。還要注意end是如何把一個尾線,使之不與在Haml的線條相匹配,並且錯誤似乎來自超越你的源端。

如果腳本行沒有啓動塊,Haml不會注意到,並且仍然假定塊已經打開,並且無論如何都會生成end語句。例如,Haml的

- a_variable = just_set_the_var 
    %li= thing 

生成以下紅寶石:

a_variable = just_set_the_var 
_hamlout.buffer << "<li>#{a_variable 
}</li>\n";end; 

第一行直接從Haml的複製,並且由於它不包含do |...|,即Haml的生成end是無與倫比,產生語法錯誤。

Haml應該檢查腳本行在縮進下面的行時是否確實啓動了一個塊,創建了一個更具信息性的錯誤,但目前情況並非如此。

+0

啊完美。謝謝。 – 2013-04-20 18:35:54

相關問題