2010-10-17 18 views
6

tôi thấy điều này "thực hiện mà không có sự thay thế trở lại vào đầu ra", nhưng có lẽ tiếng Anh của tôi không quá tốt, tôi không thể thực sự hiểu ý nghĩa của nó. Bất cứ ai có thể giúp đỡ?<% %> (không bằng nhau) trong ery ruby ​​nghĩa là gì?

+0

Trong bối cảnh Rails loại điều này hầu như luôn luôn có nghĩa là 'kiểm soát dòng chảy' - đó là mã mà không trả lại một giá trị, nhưng thay vì nói với mã khác hay không và khi nào lửa. –

Trả lời

10

<%%>

sẽ thực thi mã Ruby với không ảnh hưởng đến các trang html được trả lại. Đầu ra sẽ bị vứt bỏ.

<% =%>

sẽ thực thi mã Ruby và chèn kết quả của mã mà ở vị trí của <% =%>

dụ ...

<% puts "almost" %> nothing to see here 

sẽ làm cho như

nothing to see here 

tuy nhiên

<%= puts "almost" %> nothing to see here 

sẽ trả lại như

almost nothing to see here 
7

Đôi khi bạn sẽ phải (hoặc bạn muốn) thực hiện một số câu lệnh ruby ​​nhưng không cho mục đích đầu ra.

như sau:

<% if @user.nil? %> 
    Hi, welcome! 
<% else %> 
    Hi, <%= @user.name %>! 
<% end %> 

Tất nhiên đây chỉ là một trường hợp sử dụng, nhưng đôi khi bạn cần phải <% %>: D

1

Mã trong <% %> (không bằng nhau) được thực hiện "với thay không trở lại vào đầu ra "có nghĩa là bạn muốn thực thi mã KHÔNG CÓ bất kỳ đầu ra nào, giống như một vòng lặp và phần tốt nhất là, nó có thể được sử dụng với một mã không phải ruby.

<% 3.times do %> 

<h1>Hello world</h1> 

<%end%> 

This will give: 

<h1>Hello world</h1> 
<h1>Hello world</h1> 
<h1>Hello world</h1> 
+0

ohh, cảm ơn. Vì vậy, với = có phải có một đầu ra! – wizztjh

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