Ruby程序员

修改默认的scaffold template

2017-12-07  本文已影响34人  布拿拿

在使用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.

上一篇下一篇

猜你喜欢

热点阅读