在使用Rails的時候浓恶,對于scaffold這個操作并不陌生局服,因為在很多入門的教材中就會教你使用rails g scaffold book titile:string author:string
這個命令去創(chuàng)建一個默認的scaffold要销,這個操作會幫你創(chuàng)建model迂尝、view、controller非驮、test、assets著恩、routes等等各種東西,不得不說蜻展,這樣真的是能夠少寫很多代碼喉誊。
但是,實際上纵顾,在對于一個小型的原型伍茄,這個操作生成的scaffold的樣式并不能達到你滿意的效果,因為自帶的樣式是非常有限的施逾,但是在積累了一些項目的經(jīng)驗之后敷矫,比如你發(fā)現(xiàn)帶上bootstrap會使得樣式更加工程化一些,看起來不那么的rusty汉额。
綜上所述曹仗,我想要修改默認的generator生成的東西,這個之前看Simon使用過蠕搜,但是沒有仔細的研究模板怎茫,所以今天正好抽了一個時間把這個東西講一下。
操作其實并不復雜妓灌,Google搜索一下 how to change rails default scaffold template, 出來的結(jié)果基本上還是差強人意的轨蛤。所以學會提問能夠使得你的工作效率太幅度的提升。在研究了一些問題之后虫埂,發(fā)現(xiàn)Rails Guides上面有一篇文章是告訴你如何去修改以及創(chuàng)建自己的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
創(chuàng)建了以上之后澳窑,你就可以修改里面的內(nèi)容了。
至于內(nèi)容在哪里岳颇,當然是在rails的源碼里面咯照捡,傳送門
當然你把那些東西都復制進去之后理論上你就覺得可以讓這些東西run起來了,實在是太年輕话侧。有時候還很天真栗精。他會給你報一個錯,告訴你model_resource_name
找不到這個方法瞻鹏,你不需要擔心悲立,因為既然我寫這篇文章就會告訴你里面有兩個方法找不到咯。
一個是model_resource_name
新博,另一個是singular_route_name
薪夕,解決方案很簡單,替換成singular_table_name
就可以了赫悄,至于為什么原献。 你可以看另一個傳送門
以上。
Long live the Rails.