我正在尝试使用命令rails g scaffold ModelName
生成的页面来理解在创建对象期间发生的事情。
我不明白的是,给定模型Location
,_form.html.erb
form-tag看起来像这样:
<%= form_for(@location) do |f| %>
如果我理解正确,可以将表单提交指向location_path,这就像存储在数据库中的所有位置的索引(或列表)。
为什么表单不指向create
或update
?实际创建的对象在哪里?如果有人能描述这里的流程,我会非常感激,比如
_form.html.erb
提交locations_controller.rb
重定向到locations_controller.rb
中的sometemplate.html.erb
答案 0 :(得分:1)
表单提交的位置取决于@location.new_record?
。
如果是新记录,它会POST
到locations_path
:/locations
。这映射到LocationsController#create
。
如果是现有记录,则会PUT
(或PATCH
更新版本的Rails)location_path(@location)
:/locations/:id
。这映射到LocationsController#update
。
正如@Pavan在评论中所建议的那样,查看现有路线可以帮助理解路由:
rake routes