为什么Rails形成帮助器看起来像do循环?

时间:2014-07-28 18:00:29

标签: ruby-on-rails ruby form-helpers do-loops

这是一个我长期以来一直要求的问题,但是刚刚接受了这个问题" Rails magic"到这一点。正如标题所述,为什么Rails形成帮助器看起来像一个do循环?如果您查看official Rails documentation,它似乎无法解释这一点,只需将以下内容作为基本示例跳转:

<%= form_tag do %>
  Form contents
<% end %>

那么这里到底发生了什么?为什么表单似乎是创建循环而不是其他语言中没有所述循环的输入表单。

<%= form_for @person, url: {action: "create"} do |person_form| %>
  <%= person_form.text_field :name %>
  <%= fields_for @person.contact_detail do |contact_details_form| %>
    <%= contact_details_form.text_field :phone_number %>
  <% end %>
<% end %>

2 个答案:

答案 0 :(得分:8)

那不是&#34; Rails魔术&#34;,这是完全香草的Ruby语法。 do / end表示Ruby中的块,而不是循环。

滑轨&#39;文档没有解释这一点,因为Rails&#39;文档假设了解Ruby。 Rails没有引入任何新的语法(也不能),它只是一个用100%普通的Ruby编写的框架。

答案 1 :(得分:3)

因为它需要一个块参数。

它与循环没有任何关系,例如,File#open也需要一个块。

#open生成打开的文件。 form_for帮助程序产生帮助程序。