4-2 form_for 等解说

form_for 是什么黑魔法?

  • form_for 是 Rails 的表单产生器,Rails 会智能的根据你指定的“物件”@group 与栏位 f.text_field :title 展开,产生表单,这个表单的 html 长得实际是这样:
<form class="new_group" id="new_group" action="/groups" accept-charset="UTF-8" method="post"><input name="utf8" type="hidden" value="✓"><input type="hidden" name="authenticity_token" value="t62lKWMo2WWuNOAquFxHZk4/viiih6WEg7L9rQCoYWcR3CkhdllALm3ok2Wg4GaqDlAQPtBlNi+8ga9YDqVKiA==">
    标题
    <input type="text" name="group[title]" id="group_title">
    <br>
    叙述
    <br>
    <textarea name="group[description]" id="group_description"></textarea>
    <br>

    <input type="submit" name="commit" value="Submit" disable_with="Submiting..." data-disable-with="Submit">
</form>

Rails 怎么知道我传了什么东西进来?

荧幕快照 2016-07-13 上午12.51.12.png荧幕快照 2016-07-13 上午12.51.12.png

打开表单,试着送出一笔资料,注意看你的 log (rails s的那个视窗),会发现 Rails 会自动去解析表单里面的栏位,“压缩”成一个东西叫 "group"=>{"title"=>"board 1", "description"=>"body"}, "commit"=>"Submit"}。这就是params

group_params 又是什么?

这是一个“过滤器架构”叫 Strong Parameter,在这里你先不用详细理解 Strong Parameter 是什么,你只要知道因为 Rails 很聪明的会翻译你的表格,所以外面的坏人会想要偷塞一些垃圾进来,所以我们要设一个“允许进来的栏位”,在这里就是titledescription