第11章的一个问题,在/users/new页面下点击"Add User"时,是如何跳转回index页面的?
在users_controller.rb中,发现有个create action,这里面的语句就是完成了跳转回index页面并提示添加成功,那么现在问题成为,为什么点击了Add User按钮,会执行到create action呢?
通过在页面上查看源代码发现:
<form action="/users" class="new_user" id="new_user" method="post">
这是Add User所在的表单,Add User是submit类型按钮,当点击时,就会产生POST请求。而且是朝/users发送的
在def create的上面有两行注释:
# POST /users
# POST /users.xml
意思就是提醒读者,当页面以POST请求访问/users的时候,就要转到create action上面去,为什么?是一个惯例么?
ruby script/generate scaffold user name:string hashed_password:string salt:string
结果中:
create app/controllers/users_controller.rb
那么action create就是这时候自动产生的,那么为什么一个POST请求会自动发送给它呢?
new.html.erb
<% form_for @user do |f| %>
<%= f.submit "Add User" , :class => "submit" %>
<% end %>
如果说form_for @user指明了要生成的form中action="/users",那么接下来是怎么让POST请求传给create的?