2012-03-30 19 views
11

Tôi mới dùng đầu bếp, ruby, DSL ruby ​​và erb. Tôi đến từ python. Trong một mẫu ruby ​​erb tôi muốn làm một cái gì đó như thế này.Mẫu đầu bếp và erb. Cách sử dụng các khối mã boolean

<% if node[:monit][:server]=='nginx' -%> 

ALL OF MY NGINX TEXT 

<% end -%> 

<% if node[:monit][:server]=='redis' -%> 

ALL OF MY REDIS TEXT 

<% end -%> 

Rõ ràng là tôi đang thiếu thứ gì đó về cú pháp thích hợp.

Cảm ơn

+1

Tại sao? Nó có cho bạn lỗi không? Vui lòng bao gồm nó. –

Trả lời

25

Hãy thử điều này:

<% if node[:monit][:server]=='nginx' -%> 

    nginx_text=<%= node[:nginx][:text] %> 

<% end -%> 

<% if node[:monit][:server]=='redis' -%> 

    redis_text=<%= node[:redis][:text] %> 

<% end -%> 

Mã bọc trong <% %> hay <% -%> là một tuyên bố được đánh giá. Mã được bọc trong <%= %> là mã được đánh giá và kết quả được đặt vào tệp. Chuỗi bị bẻ khóa không cần phải được gói trong thẻ erb nếu chúng không đổi, nhưng mã Ruby phải được bao trong thẻ erb nếu bạn muốn kết quả của mã đó đi vào tệp của mình

+2

Đối với những người quan tâm đến các dấu gạch nối thừa đó: http://stackoverflow.com/a/7996827/750510 – madhead

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