Я отменяю действие создания устройства Registrations Controller. У меня есть две формы для регистрации, отдельных или компаний, у компании есть поле под названием company_form, установленное в true, которое отличает две формы.Рельсы рендеринга частичного и компоновки в контроллере
После проверки формы мне нужна правильная форма для рендеринга (ранее она возвращалась к форме по умолчанию, независимо от того, какую форму я использовал).
У меня возникла проблема, когда визуализируется только частичное (очевидно, поскольку я только показываю частичное), но мне нужен также макет/файл приложения.
class RegistrationsController < Devise::RegistrationsController
def create
<!-- Other devise code here -->
if resource.company_form
render partial: 'shared/company_signup_form'
else
render partial: '/shared/individual_signup_form'
end
end
end
Я попытался
if resource.company_form
render partial: 'shared/company_signup_form', layout: 'layouts/application'
else
render partial: '/shared/individual_signup_form', layout: 'layouts/application
end
Но я получаю сообщение об ошибке
Template is missing
Missing partial layouts/_application
Почему это выглядящий для частичного _application, когда я указал расположение и как я могу получить правильное расположение к применяется
Thanks
Редактировать
Читая документацию, говорит
«Обрати внимание, что макеты для обертонов следовать тому же опережените подчеркиванию имен, как регулярные партиалов, и помещаются в той же папке, парциальный, что они принадлежат (не в папке мастер-макетов). "
Но я хочу, расположение по умолчанию будет применяться
макеты/приложения предполагают, чтобы работать для всех частичной или любой страницы вашего рендерите, это главная страница вашего модуля просмотра. Если вы хотите разный макет для двух разных ситуаций, вы можете написать одно условие в контроллере приложения –
ну, это то, что я на самом деле просто хочу, чтобы макет был рендерингом, но он не делает – Richlewis
http://api.rubyonrails.org/classes/ActionView /PartialRenderer.html использовать это для ref, может это решить вашу проблему –