17
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

RailsのScaffoldのテンプレートを変更する方法

Posted at

はじめに

簡単な社内用のシステムをRailsで作ろうと思いたち、簡単なアプリケーションなのでscaffoldで自動生成してから修正することにした。
ただデフォルトのままだと作成されるコードは見た目的に今いちなので、デフォルトのtemplateではなく自前のtemplateからviewsなどを作る方法を調べたのでメモしておく。

環境

  • OS: OS X 10.11.1
  • Ruby: 2.2.3
  • Rails: 5.0.0.1

手順

デフォルトのscaffoldで作成する元となるViewsのファイルは $RAILS_HOME/vendor/bundle/ruby/2.2.0/gems/railties-5.0.0.1/lib/rails/generators/erb/scaffold/templates/ にある。

gemのインストール先を $RAILS_HOME/vendor/bundle にした場合。

ここではその元となるファイルを変更する方法を記載する。

既存のtemplateをコピー

一からtemplateを作成するのは面倒なので以下のコマンドでデフォルトのtemplateを作成する。

$ bundle exec rails app:templates:copy

上記コマンドを実行すると lib/templates にデフォルトのtemplateがコピーされる。

$ tree lib/templates
lib/templates
├── erb
│   ├── controller
│   │   ├── templates
│   │   │   └── view.html.erb
│   │   └── view.html.erb
│   ├── mailer
│   │   ├── templates
│   │   │   ├── view.html.erb
│   │   │   └── view.text.erb
│   │   ├── view.html.erb
│   │   └── view.text.erb
│   └── scaffold
│       ├── _form.html.erb
│       ├── edit.html.erb
│       ├── index.html.erb
│       ├── new.html.erb
│       ├── show.html.erb
│       └── templates
│           ├── _form.html.erb
│           ├── edit.html.erb
│           ├── index.html.erb
│           ├── new.html.erb
│           └── show.html.erb
└── rails
    ├── assets
    │   ├── javascript.js
    │   ├── stylesheet.css
    │   └── templates
    │       ├── javascript.js
    │       └── stylesheet.css
    ├── controller
    │   ├── controller.rb
    │   └── templates
    │       └── controller.rb
    ├── helper
    │   ├── helper.rb
    │   └── templates
    │       └── helper.rb
    └── scaffold_controller
        ├── api_controller.rb
        ├── controller.rb
        └── templates
            ├── api_controller.rb
            └── controller.rb

16 directories, 28 files
$ 

templateの修正

自分の好きなように template を変更する。

参照先変更

config/application.rbを変更してtemplatepathを作成したtemplateのものに変更する。

config/application.rb
require_relative 'boot'

require 'rails/all'

Bundler.require(*Rails.groups)

module StockViewer
  class Application < Rails::Application
    config.templates = "./lib/templates"
  end
end

以降、参照されるtemplatelib/templatesに変更される。

おしまい。

17
15
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
17
15

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?