Я использую Rails 4.0.3. Как сделать частичное из консоли Rails?
Как сделать частичную часть с консоли Rails?
Ответ 1
Попробуйте это (в консоли):
# 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)
Как указал Джош Диль, вы также можете использовать обычные параметры, такие как locals
в рендеринге. Я ожидаю, что вы сможете использовать все обычные параметры рендеринга, обычно используемые в контроллерах и представлениях.
Пример Josh:
av_helper.render(partial: "tags/tag", locals: {term: term})
Ответ 2
Для меня лучший способ заставить его работать в Rails 4.2 был с этим twoliner:
view = ActionView::Base.new('app/views/products', {}, ActionController::Base.new)
output = view.render(file: 'index.html', locals: {:@products => Product.all})
Я нашел это решение в github.
Ответ 3
В Rails 5 будет официальный способ (ApplicationController.render 'templates/name') (cf this pull request: https://github.com/rails/rails/issues/18409)
Кто-то сделал камень, чтобы заставить его работать на Rails 4: https://github.com/brainopia/backport_new_renderer