2009-06-09 31 views
5

Tôi đang cố chuyển sang sử dụng HAML cho các giao diện của mình nhưng tôi vẫn nhận được các tin nhắn KENSURE không mong đợi. Tôi đã sử dụng html2haml để chuyển qua các tệp xem làm việc. Đầu tiên chạy qua nó nói với tôi tôi không cần kết thúc mà html2haml đã có trong đầu ra của nó vì vậy tôi gỡ bỏ nó và bây giờ tôi nhận được lỗi mà trông giống như nó là phàn nàn về hình thức không được kết thúc.Rails Vấn đề chuyển đổi HAML - KENSURE không mong muốn, mong đợi KEND

Tôi đang làm gì sai?

nhắn

lỗi:

compile error 
app/views/sessions/new.html.haml:20: syntax error, unexpected kENSURE, expecting kEND 
app/views/sessions/new.html.haml:22: syntax error, unexpected $end, expecting kEND 

application.html.haml:

!!! 
%html 
%head 
    %title 
    = APP_CONFIG[:site_name] + ': ' + @page_title 
    == <meta http-equiv="content-type" content="text/xhtml; charset=utf-8" /> 
    == <meta http-equiv="imagetoolbar" content="no" /> 
    == <meta name="distribution" content="all" /> 
    == <meta name="robots" content="all" /> 
    == <meta name="resource-type" content="document" /> 
    == <meta name="MSSmartTagsPreventParsing" content="true" /> 
    = stylesheet_link_tag 'base' 
    = javascript_include_tag :defaults 

    %body 
    #container 
     #header 
     - if logged_in? 
      = link_to 'Logout', logout_path 
     - else 
      = link_to 'Login', login_path 
      = link_to 'Signup', signup_path 
     #content 
     = flash_messages 
     = yield :layout 

và buổi/new.html.haml

= title "Login", :h2 
- form_tag session_path do 
%fieldset 
    %legend 
    Your Details 
    %ol 
    %li 
     = label_tag 'login', 'Username' 
     = text_field_tag 'login', @login 
    %li 
     = label_tag 'password' 
     = password_field_tag 'password', nil 
    %li 
     = label_tag 'remember_me', 'Remember me' 
     = check_box_tag 'remember_me', '1', @remember_me 
.buttons 
    = submit_tag 'Login' 
    = link_to 'Forgotten Password', forgot_password_path 

Trả lời

13

Đây là một cái gì đó Haml làm khi bạn' đã nhận được khoảng cách của bạn sai. html2haml thực hiện hầu hết công việc cho bạn, nhưng bạn vẫn phải xem lại các thay đổi. Các vấn đề trong buổi/new.html.haml là bạn đang bắt đầu một khối việc phải làm không có nội dung:

- form_tag session_path do 
%fieldset 

Toàn bộ fieldset nên được lồng vào nhau (thụt) trong đó do khối. Bởi vì không có nội dung gì cả, Haml không đặt trong một tuyên bố end, vì vậy khi các tập tin được giải thích, bạn nhận được:

unexpected $end, expecting kEND 

có nghĩa là "Tôi nhấn cuối của tập tin ($ kết thúc), tôi đã mong đợi từ khóa kết thúc (kEND) "

+1

Đó là giải pháp nhưng tôi nghĩ rằng phiên debug này đã hoàn toàn đưa tôi ra khỏi HAML.Việc đóng một vài dấu ngoặc đơn là không quan trọng so với việc phải đối phó với các lỗi phân tích không gian trắng không thể sửa được. Lớp nút cũng cần được thụt lề là tốt và các thẻ meta được borked bởi HTML2HAML bằng cách được chuyển đổi thành băm ruby. Quá nhiều quirks lạ trong DSL này theo ý thích của tôi – srboisvert

+0

Tôi rất tiếc khi nghe điều đó. Tôi muốn đề nghị của Mike Woodhouse lần thứ hai để thử chuyển đổi các tập tin bằng tay - những thứ khoảng trống không có bản năng khá nhanh chóng. Ngay cả khi bạn từ bỏ Haml, mặc dù, có vẻ như bạn đã tìm thấy một số lỗi trong html2haml, vì vậy tôi rất muốn xem các tệp nhập của bạn để tôi có thể sửa chúng. –

1

Như được hiển thị, đoạn đầu tiên có% body thụt vào một cấp nhiều hơn% head, và% head ở cùng mức với% html, cả hai đều không tốt. Nếu nó hoạt động, bạn có thể nhận được một cái gì đó như

<html> 
</html> 
<head> 
    ... 
    <body> 
    ... 
    </body> 
</head> 

Tôi nghĩ rằng hầu hết các trình duyệt sẽ bị nghẹt thở! ;-)

Nói chung tôi không phải là fan của html2haml, mặc dù nó cố gắng hết sức dường như không thể xử lý mọi thứ. Trừ khi bạn có một đống lớn các tập tin xem, tôi muốn có xu hướng dành thời gian làm lại các tập tin bằng tay. Bạn không cần phải làm tất cả cùng một lúc, tại sao không chỉ dịch chúng khi bạn đi? Bạn cũng sẽ học được nhiều hơn về HAML theo cách đó. Đủ - hy vọng - bạn sẽ thấy toàn bộ sự thụt đầu dòng trở thành bản năng, sau đó tiến trình bắt đầu tăng tốc.

1

HAML hoạt động thực sự kém với các vấn đề như tab thay vì khoảng trắng và thụt lề không chính xác.

Cách giải quyết của tôi (ít nhất là trên OSX sử dụng TextMate) là sử dụng TextMate, có HAML/SASS bundle installed. Sau đó, tôi sử dụng CMD- [để bỏ thụt lề văn bản, sau CMD-] để thụt lại văn bản đúng cách. Điều đó được loại bỏ bất kỳ tab vô hình và thụt lề không chính xác, cộng với tiết lộ bất kỳ vấn đề cấu trúc.

0

Một tính năng không được sử dụng là chế độ ERB của html2haml.

html2haml -e <input.html> output.html.haml 

Chỉ cần sử dụng -e sẽ nhận được HAML của bạn khoảng 95% số đường có hơn 50% sử dụng html2haml tinh khiết

Các vấn đề liên quan