在使用Rails的时候,对于scaffold这个操作并不陌生,因为在很多入门的教材中就会教你使用rails g scaffold book titile:string author:string
这个命令去创建一个默认的scaffold,这个操作会帮你创建model、view、controller、test、assets、routes等等各种东西,不得不说,这样真的是能够少写很多代码。
但是,实际上,在对于一个小型的原型,这个操作生成的scaffold的样式并不能达到你满意的效果,因为自带的样式是非常有限的,但是在积累了一些项目的经验之后,比如你发现带上bootstrap会使得样式更加工程化一些,看起来不那么的rusty。
综上所述,我想要修改默认的generator生成的东西,这个之前看Simon使用过,但是没有仔细的研究模板,所以今天正好抽了一个时间把这个东西讲一下。
操作其实并不复杂,Google搜索一下 how to change rails default scaffold template, 出来的结果基本上还是差强人意的。所以学会提问能够使得你的工作效率太幅度的提升。在研究了一些问题之后,发现Rails Guides上面有一篇文章是告诉你如何去修改以及创建自己的generator。
Well, TL;DR
所以你需要操作的就是
mkdir -p lib/templates/erb/scaffold/
所以可以看到,如果在这里面放了一些模板,Rails会去使用这里面的模板而不是自带的一个模板了。
于是你在里面可以新建
touch index.html.erb _form.html.erb show.html.erb new.html.erb edit.html.erb
创建了以上之后,你就可以修改里面的内容了。
至于内容在哪里,当然是在rails的源码里面咯,传送门
当然你把那些东西都复制进去之后理论上你就觉得可以让这些东西run起来了,实在是太年轻。有时候还很天真。他会给你报一个错,告诉你model_resource_name
找不到这个方法,你不需要担心,因为既然我写这篇文章就会告诉你里面有两个方法找不到咯。
一个是model_resource_name
,另一个是singular_route_name
,解决方案很简单,替换成singular_table_name
就可以了,至于为什么。 你可以看另一个传送门
以上。
Long live the Rails.
网友评论