Day-11: form_for 系虾密?很好用!

视图小帮手

form_forlink_to都是view helper


这个form_for的程序码区块被用来建立HTML表单
在区块中,你可以使用各种函式来建构表单
举个例子
f.text_field :name建立出一个文字输入框

当有麻豆的时候!记得就是用form_for就对了

https://ithelp.ithome.com.tw/upload/images/20210925/2014025930ZKfSNrhS.png


html会帮你自动产生

在产生<form> 标签的时候都会自动帮你加上并产生 authenticity_token的栏位,确保比较不会被有心人士破坏!
https://ithelp.ithome.com.tw/upload/images/20210925/20140259rWkZoECi2N.png
上图内容中 input 标签 name 属性为 authenticity_tokenauthenticity_token 的隐藏 input 标签,是 Rails 内建用来防止 CSRF (cross-site request forgery protection) 攻击的安全机制,看起来彷佛乱码般,每次的重新整理都会产生不一样的值。

这时你肯定会问!authenticity_token 白话一点是做什麽用的呢? 到底?(黑人问号又出来!我问天催蕊!!!!回来回来!

有些有心人士,也有那麽点底子(恩?,只要检视网页原始码,就会知道就可以看得出来这个表单要用什麽方式,要送往何处,其他细节...等,他若写一个小程序,就能够破坏你原本的东西!如同被人家发现你没穿内裤般那样!可想而知有多麽恐怖啊 (抓头,都要变河童的菜鸟TT

设定好表格後,是为了@product这个ActiveRecord资料而设定的,所以表格送出的这一包params会将我们在表格内填的变数,整个包在product物件下面,才会需要使用强参数(Strong Parameter)那样的机制将product变数抽出做permit(过滤),免得遭受攻击!
(注:params是参数,Rails 会把那串东西,整理成一个类似 Hash 的东西整包传送回来)

若网站是用 Rails 开发的,Rails 预设在处理表单的时候会检查这个 authenticity_token 是不是由本网站所产生的,如果他没有这个栏位,或是这个栏位的值经 Rails 核对後发现并不是自身生产的,就会画面喷红字给你看!喷出**(ActionController::InvalidAuthenticityToken 红色画面)**

所以,form_for在产生<form> 标签的时候都自动帮你加上并产生 authenticity_token的栏位,确保比较不会太容易被有心人士所破坏唷!那我们还真要谢谢rails这个贴心的小举动呢~是不?/images/emoticon/emoticon42.gif
我是程序界的菜逼八,如果我有写错的地方/images/emoticon/emoticon48.gif,欢迎纠正,乾虾!!!

参考资料:Rails API /为你自己学 Ruby on Rails


<<:  Day 10 - Valid Sudoku

>>:  Day 13 : 程序除错与异常

电脑突然出现奇怪的档案...

故事的开始是着样的 某天有位帅帅在自已的电脑上发现吃掉硬碟空间的凶手... 硬碟空间整个塞爆的概念....

让Python GUI 画面在最前方显示/ 最小化显示/ 隐藏桌面图示的方法

很多时候,刚程序开启後有可能因为使用者操作的因素就让正在跑的程序被盖住了。尤其是在使用键盘滑鼠精灵控...

机器学习:模型训练架构

分散式运算架构 MapReduce 利用函式语言程序设计的概念,将分散运算分为映射(Map)和归纳...

30天程序语言研究

今天是30天程序语言研究的第六天,研究的语言一样是python,今天主要学习的是建立一个计算机和字典...

Day 25 (Js)

1.= (1)=设值 (2)= =比较 (3)= = =型态 (4)=> 箭头函式 var x...