form_for方法如何知道将结果哈希发送到哪个控制器#动作?

时间:2013-09-21 22:44:02

标签: ruby-on-rails-4

我认为涉及某些约定。它们是什么?

假设@person是具有正确条目的资源实例,此表单中的数据将从何处开始?

<%= form_for @person do |f| %>
  First name: <%= f.text_field :first_name %><br />
  Last name : <%= f.text_field :last_name %><br />
  Biography : <%= f.text_area :biography %><br />
  Admin?    : <%= f.check_box :admin %><br />
  <%= f.submit %>
<% end %>

1 个答案:

答案 0 :(得分:0)

是的,这是一个惯例。 Rails会查看@person是现有记录还是新记录(取决于@person.id是否存在)。

  • 如果@personnew record,则Rails会将表单的操作指向PeopleController.create请求的POST操作
  • 如果@personexisting record,则Rails会将表单的操作指向PeopleController.update操作,并将@ person.id作为参数(将以参数[:id}显示) ])并提出PATCH请求