There's an echo in my head

日々のメモ。

手動でRailsのビューをレンダリングする

バッチで生成しておきたいとかそういうときに。

class FooController < AbstractController::Base
  include AbstractController::Rendering
  include AbstractController::Translation
  include AbstractController::AssetPaths
  include ActionView::Layouts

  self.view_paths = "app/views"

  def index
    render template: "foo/index.html.slim"
  end
end

puts FooController.new.index
# => レンダリングされた文字列

もうちょっとActionView側を触るのかと思いきや、パッと調べた感じだとAbstractControllerを用意するやり方が出てきて、なんか無駄な感じもするけど手軽だしまあいいか。

もしかしたらヘルパーメソッドを使うときにはこれ以外にもincludeする必要があるかもしれない。 そのときはaction_controller/base.rbを見てみるといいかも。

参考

このブログに出てくるコードスニペッツは、引用あるいは断りがない限りMITライセンスです。