環境
- Rails 4、5
やりたいこと
railsのtasksからActionViewを参照してHTMLを生成(render)して出力したい
ここでいうrender
がややこしいのだが、よくControllerの中で使っているrender json: {key: 1}
などとは違う
もっと言うと普段使っているrenderの内部で更にActionViewのrenderを呼び出している
コード
さっさと動くコード見せろって話
view_paths = Rails::Application::Configuration.new(Rails.root).paths["app/views"] v = ActionView::Base.new(view_paths) puts v.render(file: "posts/index.html.erb")
難しいことは指定なくてこれで app/views/posts/index.html.erb にあるHTMLが表示される
変数渡したい
v.assign(name: 'taro')
何度も言うけど、ここのrednerは普段コントローラーで使っているrenderとは違うので、変数をそのまま渡せない。強いて言うならViewの中で使っているrender :partialに近い(というか同じだと思う