Рендеринг в произвольные файлы макетов в Rails 3 - PullRequest
2 голосов
/ 05 января 2011

Как мне выполнить рендеринг с произвольным файлом макета в приложении Rails 3?

Чтение 2.2.4 Рендеринг произвольного файла в http://guides.rubyonrails.org/layouts_and_rendering.html#using-render говорит мне, что это возможно для файлов (простопередать параметр :file в вызов render, который начинается с косой черты.

Однако в Rails 3.0.1 это не работает для параметра :layout, которыйчто я хотел: визуализировать произвольный файл в произвольном макете.

Ответы [ 2 ]

3 голосов
/ 01 марта 2011

Другой способ сделать это - просто добавить «макеты» где-нибудь в пути к макету . Это кажется смешным, но Rails добавит префикс «layouts /» только в том случае, если его еще нет в пути.

# rails/lib/abstract_controller/layouts.rb:268
# out of context, but here in all it's glory
_prefix = "layouts" unless _implied_layout_name =~ /\blayouts/

Просто чтобы убедиться, что я здесь ясен, вот пример:

# your layout at app/themes/foobar/layouts/foobar.html.erb
layout Rails.root.join('app/themes/foobar/layouts/foobar').to_s
        #=> renders /path/to/your/app/themes/foobar/layouts/foobar.html.erb
1 голос
/ 05 января 2011

Попробуйте

render :template => '/absolute/path/to/template'

Имейте в виду, что, если у вас нет <%= yield %> в этом документе, ничто не будет отображаться, кроме содержимого этого файла. Могу я спросить, почему вы это делаете? Если вы пытаетесь заставить пользователя загрузить файл или просмотреть его, это не лучший способ ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...