美文网首页Ruby程序员
修改默认的scaffold template

修改默认的scaffold template

作者: 布拿拿 | 来源:发表于2017-12-07 21:39 被阅读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.

    相关文章

      网友评论

        本文标题:修改默认的scaffold template

        本文链接:https://www.haomeiwen.com/subject/pbmjixtx.html