整理一下前台向后台传送数据的思路。
比如采集用户个人信息,一般是用form表单实现。用户填写好form表单之后,通过submit提交。那这份数据要被提交到哪里去呢?
数据,理所当然是要被提交到数据库的。那这个过程是怎样实现的呢?
起点:view层的submit按钮;终点:database
view层submit(post)----route→→controller::create
view层的form表单使用post方法
控制器controller和模型model之间是如何传送数据的?
model有CRUD方法,controller也有CRUD方法,(controller中的CRUD里面的数据内容是让用户填写的,而model的CRUD方法是程序员自己测试程序能否跑通用的。)
model 和 controller 就是通过对应的CRUD来传输数据的。
例如,程序员自己测试的时候:rails c
用到create方法: User.create(name: "Jim", age: 16)
而在controller中,同样的用create方法:@user =User.create(name: params[:name], age:params[:age])
在这里用 params[:name] 代替了"Jim",params[:name]的位置就是让用户在form表单里面填写的。
params是个hash,hash{name: "Jim", age: 16},hash[:name]会将“Jim”提取出来,如同这里的params[:name]也将"Jim"提取了出来。
而view和controller传送数据,就是用RESTful方法找到对应的路径。在这里,用post方法,找到create方法。
上面有错的地方:@user = User.create(name: params[:name], age: params[:age])
这样写是得不到:name的值的,应该是params[:user][:name]
因为这个params是个hash套hash的结构
params=>{ “user” => {"name"=>"Jim", "age"=>"16"}}