<%= 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
的是什么?
答案 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 替换为任何其他字词或字符。