这是一个我长期以来一直要求的问题,但是刚刚接受了这个问题" 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 %>
答案 0 :(得分:8)
那不是&#34; Rails魔术&#34;,这是完全香草的Ruby语法。 do
/ end
表示Ruby中的块,而不是循环。
滑轨&#39;文档没有解释这一点,因为Rails&#39;文档假设了解Ruby。 Rails没有引入任何新的语法(也不能),它只是一个用100%普通的Ruby编写的框架。
答案 1 :(得分:3)
因为它需要一个块参数。
它与循环没有任何关系,例如,File#open
也需要一个块。
#open
生成打开的文件。 form_for
帮助程序产生帮助程序。