['vivid]生动的,鲜明的,鲜艳的,大胆的,清晰的,活泼的,逼真的

Let us cling together!

 

form_for的神奇

new和eedit的模板几乎一模一样,表单的形式都是很简单的:
     <% form_for(@contact) do |f| %>
可是一个POST动作,一个PUT动作,结果就是一个导向到create方法,一个导向到update方法。查看源文件可以看到edit的模板生成的代码多了一个隐藏控件:
     <input name="_method" type="hidden" value="put" />
这其中Rails一定有什么隐藏的处理。google之后发现了这一篇文章:
     http://www.javaeye.com/problems/19749
原来有人跟我有完全一样的疑惑,区别是人家查看了源代码,而我懒,没有看:)。
原来form_for在生成代码的时候会判断是新建还是更新,如果是更新则会加上PUT method。看来Rails为我们处理了太多太多的细节,让我们可以更加傻瓜地应用框架。

posted on 2010-05-10 11:34  文祥  阅读(1113)  评论(0编辑  收藏  举报

导航