form 表单中的数据怎么提交到数据库中

form 表单中的数据怎么提交到数据库中,第1张

需要你服务端实现 处理request的代码,这里就是做保存到数据库的 *** 作。比如你实现的服务端请求的处理地址是/abc/save.xxx 那么你可以在页面中设计这样一个表单,<form method="post" action="/abc/save.xxx">....</form>

正常要写三步,

第一步是 后端接收数据。

第二步是 传递数据到业务逻辑处理。

第三步是 业务逻辑处理数据后传递到数据访问层 *** 作到数据库。

不过也有简化的。在接收数据时直接 *** 作数据库的也有,不过不安全。

例如通过提交表单进行更新 *** 作,原生表单的写法如下:

方法1:

对应的controller中update action的传值是:

方法2:

对应的controller中update action的传值是:

方法3:

由于form中引用了@user这个实例变量,那么其中的

等价于方法2的写法,这时候就需要透过user去取值,传到后台的params其实是hash套user的hash的格式,

对应的controller中update action的传值是:

方法4.

和方法3不同在于@user是一个实例变量,而如果用 :user 则是指向user这个model进行增删改查,因此还可以写成:

这里我们用的是 f 去遍历form_for中每个字段,因此写法和上面三种原生的form表单略有不同

由于在form_for中指定了user这个model,因此我们需要透过user去取name,age的值,传到后台的params其实是hash套user的hash的格式,

对应的controller中update action的传值是:

1.params.permit(:name)这样的写法是只有一层,那么直接可以通过params[:name]来获取name的值;而params.require(:user).permit(:name)是有两层关系,需要通过params[:user][:name]才能获取name的值

2.使用f.text_field传值和input传值方式有所不同

(1)用input获取后台的值

(2)用f.text_field获取后台的值

两者的区别在于value=后面跟的是字符串"<%=@user.user_name%>",可以用字符串拼接的方法;而value: 后面不跟字符串而是直接用@user.user_name获取栏位中的内容

如果不确定传到后台的params是什么格式,那么可以使用pry加入断点来看


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/sjk/6681436.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-03-26
下一篇 2023-03-26

发表评论

登录后才能评论

评论列表(0条)

保存