Мне нужна помощь в очень конкретном случае.
Я хотел бы переопределить поведение макета для определенного представления. Я нашел документацию Rhodes, описывающую, что делать. (копия документации Rhodes вставлена внизу этого текста)
Я попытался использовать второй вариант («вызов метода макета на контроллере, чтобы перезаписать имя макета по умолчанию»), но это не сработало. Я предполагаю, что, возможно, неправильно понял, как кодировать контроллер, или, надеюсь, у меня только синтаксическая ошибка... См. дополнительную информацию о приложении ниже.
Может ли кто-нибудь сказать мне, как мне это сделать? Каким будет правильный синтаксис? Или я должен использовать другой метод?
Заранее спасибо.
Луи Дешен
Вот некоторая информация о приложении и о том, что я сделал:
- Простое приложение
- Сборка для iPhone
- Запуск приложения в режиме "Калькулятор"
- Представление «Калькулятор» вызывает представление «Управление», вызывающее представление «Справка»
Структура приложения:
app/ -> index.erb (Control view) -> layout.erb (Standard layout) -> calculatorlayout.erb (Customize layout for Calculator view) -> calculator/ -----> index.erb (Calculator view) -----> calculator_controller.erb (Controller to be able to override layout) -> help/ -----> index.erb (Help view)
Я создал Calculator_controller.erb, содержащий
require 'rho/rhocontroller' require 'helpers/browser_helper' class CalculatorController < Rho::RhoController include BrowserHelper layout :calculatorlayout (Thats what Rhodes doc mentionned to do)
Как я уже сказал, это не работает. Пожалуйста, скажите мне, как правильно это сделать.
Примечание. В качестве временной меры я сделал копию app/calculatorlayout.erb в app/calculator/layout.erb. Это делает рендеринг правильно, когда приложение запускается в представлении «Caculator», но если я перехожу к представлению «О программе» и обратно для просмотра «Калькулятор» рендеринг калькулятора выполняется со стандартным макетом.
--------Документация по Родосу------------------------------------------------------- ----
Если вы хотите переопределить или настроить поведение макета, вы можете вызвать функцию рендеринга со следующими параметрами:
render :action => 'index', :layout => 'mycustomlayout', :use_layout_on_ajax => false
Первый аргумент — это действие, которое вы хотите выполнить. Далее идет (необязательное) имя макета, которое предполагает, что корень приложения является базовым каталогом. В приведенном выше примере Роудс будет искать файл с именем «mycustomlayout.erb» в корневом каталоге приложения (вы также можете использовать :layout => false, чтобы отключить использование шаблона макета). Аргумент use_layout_on_ajax сообщает Rhodes, следует ли использовать макет для вызовов Ajax (по умолчанию — false).
Вы можете вызвать метод макета на контроллере, чтобы перезаписать имя макета по умолчанию:
макет: мой пользовательский макет
Это заставит вызов рендеринга использовать mycustomlayout.erb вместо файла макета по умолчанию для всех действий этого контроллера.