Layout Rhodes Rhomobile-覆盖特定视图的布局行为
我需要一个非常具体的案例的帮助 我想覆盖特定视图的布局行为。 我确实找到了描述该做什么的罗兹文档。 (Rhodes文档的副本粘贴在本文底部) 我尝试使用第二种方法(“在控制器上调用layout方法以覆盖默认布局名称”),但没有成功。 我想我可能误解了如何对控制器进行编码,或者希望只有语法错误。。。 请参阅下面有关应用程序的更多信息 谁能告诉我该怎么做? 正确的语法是什么? 还是我应该用另一种方法 提前谢谢 路易斯·德斯切内 以下是有关该应用程序和我所做工作的一些信息:Layout Rhodes Rhomobile-覆盖特定视图的布局行为,layout,rhomobile,rhodes,Layout,Rhomobile,Rhodes,我需要一个非常具体的案例的帮助 我想覆盖特定视图的布局行为。 我确实找到了描述该做什么的罗兹文档。 (Rhodes文档的副本粘贴在本文底部) 我尝试使用第二种方法(“在控制器上调用layout方法以覆盖默认布局名称”),但没有成功。 我想我可能误解了如何对控制器进行编码,或者希望只有语法错误。。。 请参阅下面有关应用程序的更多信息 谁能告诉我该怎么做? 正确的语法是什么? 还是我应该用另一种方法 提前谢谢 路易斯·德斯切内 以下是有关该应用程序和我所做工作的一些信息: 简单应用 这个版本是为i
- 简单应用
- 这个版本是为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)
需要“rho/rho控制器” 需要“助手/浏览器\助手” 类计算器控制器
- 正如我所说,这是行不通的。请告诉我正确的方法
- 注意:作为临时测量,我将app/calculatorlayout.erb复制到app/calculator/layout.erb中 这会在应用程序在“Caculator”视图中启动时正确渲染, 但是,如果我导航到“关于”视图并返回到“计算器”视图,则计算器的渲染将使用标准布局完成
在控制器中,需要指定操作方法。动作的
render
方法处理layout
属性。不能简单地为整个控制器指定布局。下面是一个示例控制器文件。然后需要一个index.erb
视图文件来对应index
操作方法
计算器控制器.rb
require 'rho/rhocontroller'
require 'helpers/browser_helper'
class CalculatorController < Rho::RhoController
include BrowserHelper
def index
# perform any logic or fetch objects for the index.erb view
render :action => :index, :layout => 'calculatorLayout'
end
end
需要“rho/rho控制器”
需要“助手/浏览器\助手”
类计算器控制器:index,:layout=>“calculatorLayout”
终止
终止
不幸的是,罗兹有可怕的文档,所以它的机制很难解读。但我必须指出,不幸的是,杰弗里在这一点上完全错了:
不能简单地为整个控制器指定布局
实际上,您可以简单地为控制器指定布局。有很多种方法,但具体来说,你可以像文件中提到的那样去做,只是不能像《理想主义者》那样尝试。如果您在render.rb
中检查源代码,您会注意到RhoController
为此定义了一个setter方法,这是一种基本的Ruby机制
def self.layout(name)
@layout = name
end
因此,您可以在控制器内使用self.layout=:layout\u name
或@layout=:layout\u name
来定义默认布局。我不知道如何覆盖它的复杂性,但这种技术将允许您为任何控制器设置默认布局。我自己测试过
RhoController
中还有一个检索布局名称的方法,如果您想自定义选择布局的行为,您当然可以在自己的控制器中重写该方法
def self.get_layout_name
@layout.nil? ? 'layout' : @layout
end