2015-05-13 24 views
6

Vì vậy, tôi là một newbie tại HAML.Sự khác nhau giữa = và - trong haml khi viết mã ruby ​​là gì?

Trong khi đi qua HAML hướng dẫn cách để đại diện cho mã ruby ​​đã được đề cập như =

ví dụ: %strong= item.title

nhưng khi tôi chạy mã này:

= @list.documents.each do |doc| 
    %tbody 
    %tr 
     %td= doc.display_name 

cùng với danh sách tất cả các dữ liệu được hiển thị ở đó cũng có rất nhiều dữ liệu rác được hiển thị liên quan đến dữ liệu danh sách thực tế được hiển thị. Đây là những gì tôi nhận:

val1 val2 val3 [#[email protected] : val1, @id:val2.....] 

Khi tôi cố gắng cùng mã trong khi thay thế = với một - các dữ liệu không mong muốn không được nhận.

- @list.documents.each do |doc| 
     %tbody 
     %tr 
      %td= doc.display_name 

đầu ra:

val1 val2 val3 

ai đó có thể giải thích sự khác biệt giữa -= trong khi viết mã ruby ​​trong Haml?

+1

'=' để hiển thị, '-' để có mã ruby ​​được thực thi mà không hiển thị – apneadiving

Trả lời

6

Cả hai đều là chỉ báo cho biết những gì cần được xử lý dưới dạng mã Ruby. Nhưng - không xuất kết quả để xem trong khi = thực hiện.

Ví dụ, hãy xem xét các helper sau:

def hlp 
    [1,2].each(&:succ) # using example relevant to your code sample 
end 

each sẽ trở lại với điều tra viên rằng nó được kêu gọi. Vì vậy, giá trị trả về của phương thức trợ giúp đó sẽ là [1,2].

Sau đây theo quan điểm HAML của bạn sẽ không hiển thị [1,2]:

- hlp 

Nhưng sau đây sẽ hiển thị nó:

= hlp 

Do đó trong mã mẫu mà bạn đã chia sẻ, bạn sẽ sử dụng -, và không phải =, bởi vì bạn không muốn hiển thị tất cả @list.documents sau khi each được thực hiện với chúng.

+0

Cảm ơn bạn. Bạn có một tâm trí đẹp. – Fuser97381

0

Trong haml, = được sử dụng để viết mã ruby ​​và hiển thị kết quả dưới dạng đầu ra, trong khi - chỉ được sử dụng để viết mã ruby.
Bạn có thể đọc thêm về haml từ số này http://haml.info/tutorial.html

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