对于一个非常具体的案例,我需要一些帮助。
我想覆盖特定视图的布局行为。我确实找到了描述该怎么做的罗德文档。(罗兹文档的副本粘贴在本文底部)
我尝试使用第二种选择(“调用控制器上的布局方法以覆盖默认布局名称”),但它没有奏效。我想我可能误解了如何对控制器进行编码,或者希望只有语法错误...请参阅下面有关应用程序的更多信息。
谁能告诉我该怎么做?什么是正确的语法?还是我应该使用另一种方法?
提前致谢。
路易斯·德申斯
以下是有关该应用程序以及我所做的一些信息:
- 简单的应用
- 构建适用于 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”视图中启动时正确呈现,但如果我导航到“About”视图并返回在“计算器”视图中,计算器的渲染是使用标准布局完成的。
--------罗德文档---------------------------------------- ----
如果您想覆盖或自定义布局行为,可以使用以下参数调用渲染函数:
渲染 :action => 'index', :layout => 'mycustomlayout', :use_layout_on_ajax => false
第一个参数是您要呈现的操作。接下来是(可选的)布局名称,它假定应用程序根目录作为基本目录。在上面的示例中,Rhodes 将在应用程序根目录中查找名为“mycustomlayout.erb”的文件(您也可以使用 :layout => false 来禁用布局模板的使用)。use_layout_on_ajax 参数告诉 Rhodes 是否在 Ajax 调用中使用布局(默认为 false)。
您可以调用控制器上的布局方法来覆盖默认布局名称:
布局:mycustomlayout
这将强制渲染调用使用 mycustomlayout.erb 代替此控制器的所有操作的默认布局文件。