rails学习笔记(6)

   rails2.x中的scaffold脚手架生成的页面中,delete那里已经不再是用botton_to方法了,生成的不再是一个form表单,而是一个普通的a标签。但rails的作者DHH非常反对对delete操作使用get的方法提交参数,他还是推荐用表单提交的方式处理delete,所以他做了件很bt的事,给delete的那个a标签监听click事件,然后用js生成一个表单提交。也就是说,他还是通过表单提交的delete,只是不通过html显式地这么做,而是通过javascript。。。

    看看这个变态的a标签吧:

================================

<a onclick="if (confirm('Are you sure?')) { var f = document.createElement('form'); f.style.display = 'none'; this.parentNode.appendChild(f); f.method = 'POST'; f.action = this.href;var m = document.createElement('input'); m.setAttribute('type', 'hidden'); m.setAttribute('name', '_method'); m.setAttribute('value', 'delete'); f.appendChild(m);var s = document.createElement('input'); s.setAttribute('type', 'hidden'); s.setAttribute('name', 'authenticity_token'); s.setAttribute('value', '6o2LD8EdrS7QGLPLdtvQNhC9hjw5ODIjM1ajNr9yx2Q='); f.appendChild(s);f.submit(); };return false;" href="/publishers/2">Destroy</a>

================================

在rails1.x里,脚手架的格式是ruby script/genrate scaffold modelName controllerName action1 action2

控制器的名字是由我们指定的,另外还可以指定action名。到了rails2.x,脚手架的格式是ruby script/generate scaffold modeName a:string, b:string

控制器名称不能指定,会自动生成和模型名相对的controller名。需要注意的是rails2.x 后面接的a:string, b:string,这里a和b是对应的数据库中表的字段名,在1.x里,自动生成的view会将数据库中的字段自动放到view里,形成表单项,而2.x中view生成哪些表单项是需要我们给脚手架传参时指定,如果不指定的话,那么生成的view里将一个表单项也没有。

posted on 2009-12-31 15:20  真阿当  阅读(118)  评论(0编辑  收藏  举报