【问题标题】:Why does the Rails form helper look like a do loop?为什么 Rails 表单助手看起来像一个 do 循环?
【发布时间】:2014-07-28 18:00:29
【问题描述】:

这是我很久以来一直想问的一个问题,但到目前为止我只是将其视为“Rails 魔法”。正如标题所述,为什么 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 %>

【问题讨论】:

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


    【解决方案1】:

    这不是“Rails 魔法”,而是完全普通的 Ruby 语法。 do/end 表示 Ruby 中的块,而不是循环。

    Rails 的文档没有解释这一点,因为 Rails 的文档假定您了解 Ruby。 Rails 没有引入任何新语法(也不能),它只是一个框架,用 100% 纯旧 Ruby 编写。

    【讨论】:

    • 哦,对了,完全忘记了。自从我使用香草 Ruby 以来已经很久了,我忘记了那一点。
    【解决方案2】:

    因为它需要一个块参数。

    它与循环无关,例如,File#open 也需要一个块。

    #open 生成打开的文件。 form_for 助手生成助手。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-12
      • 2011-11-05
      • 2011-09-21
      • 1970-01-01
      • 2023-02-11
      • 2023-03-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多