在rails中调用form_for时究竟发生了什么?

时间:2014-05-11 23:39:38

标签: html ruby-on-rails

<%= form_for(@user) do |f| %>

  <%= f.label :name %>
  <%= f.text_field :name %>

  <%= f.label :email %>
  <%= f.text_field :email %>

  <%= f.label :password %>
  <%= f.password_field :password %>

  <%= f.label :password_confirmation, "Confirmation" %>
  <%= f.password_field :password_confirmation %>

  <%= f.submit "Create my account", class: "btn btn-large btn-primary" %>
<% end %>

如果此代码嵌入到html文档中并且请求了html文档,那么form_for只调用一次以返回该页面的HTML格式吗?

最重要的是,块中f的内容是什么?它的目的是什么?

编辑:还有,负责传递f的是什么?

3 个答案:

答案 0 :(得分:1)

看起来你对铁轨的魔力有点新意,所以我理解你的问题。

Form_For执行很多操作,在最基本的级别上,它会为您的Web服务器生成与RESTful交互的正确html。如果它更进一步,它确定@user是新模型还是已存在的模型。如果是新模型,它会将请求作为帖子发送给您的新操作。如果数据库中已存在@user,则会为您的网页设置所有正确的内容,以便对记录进行更新。

为了更好地掌握,我建议查看codeschool.com rails for zombies,它可能会帮到你很多。或者阅读http://guides.rubyonrails.org/form_helpers.html

| F |是一个ruby块,它生成一个表单生成器对象(它是f),然后在该表单生成器对象上调用.lable或.submit等方法。

表单构建器对象知道您的@user,因为您将其传入,因此能够做出关于它是新模型还是当前模型的智能决策。

希望有所帮助。

答案 1 :(得分:0)

f变量用于调用该表单的标签,文本字段和提交按钮等辅助方法。请在浏览器中查看生成的html源代码。

答案 2 :(得分:0)

形式块|f|是表单构建器对象。所以你不需要一次又一次地写form_for。它被称为文本字段,单选按钮,标签,该表单的提交按钮等方法。您可以将 f 替换为任何其他字词或字符。