Vim で Rails ビュー作成時に、選択範囲をパーシャルに一発で切り出して保存

Rails でビューを作成していると、あーこの部分はパーシャル(partial: 部分テンプレート)に切り出したいな〜と思うことがよくあります。そんな時に用いている Vim の小技です。

スポンサーリンク

最初に、Vim の以下のコマンドで、編集中のファイルのあるディレクトリへと移動しておきます。

また、Vim-users.jp – Hack #69: 簡単にカレントディレクトリを変更する の設定を .vimrc に書いておくと、Space cd で移動できるので楽です。

ここでは、app/views/posts/index.html.erb を編集中と仮定します。ちなみに私は Netrw を Vim のファイラとして使っています。

パーシャルを切り出す Vim 操作

例えば、モデルのコレクション(ここでは@posts)において、app/views/posts/index.html.erb から、app/views/posts/_post.html.erb へとパーシャルなテンプレートを切り出したい場合。

app/views/posts/index.html.erb

↑これを、こうする↓

app/views/posts/index.html.erb

app/views/posts/_post.html.erb

まず最初の状態、以下のファイルにおいて…

app/views/posts/index.html.erb

1. :cd %:h で編集中ファイルのディレクトリ(**/posts/)へ移動。
2. 2行目 <%= post.content %> をビジュアルモードで選択。
3. 選択した状態で : を押し、コマンドラインモードに :’<,'> が表示される。
4. :’<,'> に続けて w _post.html.erb と入力して return。(:’<,'>w _post.html.erb)

これで、_post.html.erb ができあがります。

app/views/posts/_post.html.erb

後は app/views/posts/index.html.erb を以下のように編集。

app/views/posts/index.html.erb

パーシャルのファイル名を指定する場合は以下。

app/views/posts/index.html.erb

先頭の _(アンダースコア)と拡張子を外してパーシャルのファイル名を指定。また :collection パラメータで渡すと、パーシャル(部分テンプレート)を繰り返し表示します。

ActiveModel を利用していないコレクションの場合

ActiveRecord, ActiveModel を利用していないコレクションの場合、上述のパーシャル切り出しの方法ではエラーになりました。以下のように、app/views/posts/index.html.erb を以下のように編集して、パーシャルのファイル名とコレクションのオブジェクトを指定する。

app/views/posts/index.html.erb

パーシャル側は以下。

app/views/posts/_post.html.erb

以上です。

スポンサーリンク
パーフェクト Ruby on Rails は、最近読んだ Rails 本の中では一番役に立った本です。Chef や Capistrano など Rails と共によく使用される技術にも触れてあります。Ruby on Rails 4 アプリケーションプログラミングは、入門的な内容で Rails の機能全体を網羅されています。
スポンサーリンク
 
Twitterを使っていますのでフォローお願いたします!ブログの更新情報もつぶやいてます^^
(英語学習用)

Leave Your Message!