2013-11-27 114 views
0

在Rails教程和vids中,它與普通的ruby完全不同。例如,我看到<%render%><%end%>。我什麼時候應該使用<%%>以及它的作用是什麼?<%anything%>是做什麼用的?

+0

在您的erb模板中使用任何ruby或rails代碼時使用它 – usha

回答

3

<% code %>用於代表「嵌入式Ruby」的erb。它通常用於HTML生成模板。它的兄弟是<%= code %>它輸出表達式的返回值。

<h1>Hello, <%= @user.name %>!</h1> 
# potentially renders: <h1>Hello, Bob</h1> 
# potentially renders: <h1>Hello, Sue</h1> 

非輸出<% code %>版本的標籤是用於執行代碼,但不能寫任何東西到模板有用。這對條件(以及其他事情)很有用。

<h1> 
    Hello 
    <% if @user.sex == 'male' %> 
    Mister 
    <% else %> 
    Miss 
    <% end %> 
    <%= @user.name %>! 
</h1> 

# potentially renders: <h1>Hello Mister Bob!</h1> 
# potentially renders: <h1>Hello Miss Sue!</h1> 

在純紅寶石中,這將是一個語法錯誤。但在erb模板中,這些標籤允許您通過執行ruby來控制模板流程並寫出ruby表達式的結果來控制模板如何呈現。

Rails默認使用erb作爲其視圖,主要是html生成模板。所以你在Rails的例子中看到了很多。請記住,erb只是Rails中模板的一個選項。 There is a great many options, which may use different syntax entirely.

0

<%= %><% %>語法用於在.erb文件中寫入紅寶石。把ERB想象成一個總是允許ruby代碼運行的html文件。 <% %>語法運行ruby,但默認不執行任何操作,而<%= %>語法(請注意=)會將ruby代碼的結果輸出到屏幕。