什么<%anything%>做?

时间:2013-11-27 21:24:01

标签: ruby erb

在Rails教程和视频中,它似乎与常规ruby完全不同。例如,我看到<%render%><%end%>。我何时应该使用<%%>以及它的用途是什么?

3 个答案:

答案 0 :(得分:3)

<% code %>用于erb,代表“嵌入式Ruby”。它通常用于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>

在纯ruby中,这将是语法错误。但是在erb模板中,这些标记允许您通过执行ruby来控制模板流以及通过写出ruby表达式的结果来控制模板的呈现方式。

Rails默认使用erb作为视图,这些视图主要是html生成模板。所以你在Rails示例中看到了很多。请记住,erb只是Rails中模板的一个选项。 There is a great many options, which may use different syntax entirely.

答案 1 :(得分:0)

在HTML代码中用于在标记内显示ruby代码。

<%= render 'folder/partial_form' %>

这会使表格部分显示。

我建议你仔细阅读下面的链接:

http://www.guides.rubyonrails.org

http://guides.rubyonrails.org/layouts_and_rendering.html#using-partials

答案 2 :(得分:0)

<%= %><% %>语法用于在.erb文件中编写ruby。将ERB视为一个始终允许运行ruby代码的html文件。 <% %>语法运行ruby但默认情况下不执行任何操作,而<%= %>语法(注意=)将ruby代码的结果输出到屏幕。