我正在使用Rails 4.0.3。如何从Rails控制台渲染部分?
答案 0 :(得分:35)
试试这个(在控制台中):
# initial setup
view_paths = Rails::Application::Configuration.new(Rails.root).paths["app/views"]
av_helper = ActionView::Base.new view_paths
# (Optional) include this if your partial uses route helpers:
include Rails.application.routes.url_helpers
av_helper.render "path/to/your/partial"
另外,对于模板:
av_helper.render :template => "path/to/your/template"
更新:OP报告部分渲染行无效,并生成错误。我没有遇到过这种情况,但如果其他人这样做,这就是OP指出的成功版本:
av_helper.render :partial => 'tags/tag', :collection => Tag.limit(3)
正如Josh Diehl指出的那样,你也可以在渲染中使用像locals
这样的常用选项。我希望你能够使用控制器和视图中通常使用的所有常用渲染选项。
Josh的例子:
av_helper.render(partial: "tags/tag", locals: {term: term})
答案 1 :(得分:10)
在Rails 5中有一种正式的方法(参见this pull request):
ApplicationController.render 'templates/name'
开发人员还在Rails 4中创建了一个支持它的gem:backport_new_renderer
答案 2 :(得分:10)
对我而言,在Rails 4.2中使用它的最佳方法是使用这个twoliner:
view = ActionView::Base.new('app/views/products', {}, ActionController::Base.new)
output = view.render(file: 'index.html', locals: {:@products => Product.all})
我找到了这个解决方案on github.