render

模板是个文件,它定义一个应答的内容。Rails 支持两种格式的模板:rhtm,它是包含有
Ruby 代码和构建器的HTML,更多地用于程序方式。
习惯上,app/views/control/action.rhtml 或者app/vies/controller/action.rxml 文件内的模板用于“控制器”控制“动作”。app/views 缺省是名字的部分。它可以被覆写,通过设置
ActionController::Base.template_root =dir_path

render()方法是所有Rails 内提交操作的心脏。它接受一个选项哈希表来告诉它提交什
么,以及如何提交它。让我们看看使用在“控制器”内的render 选项。
1、render(:text =>string) 发送给定字符串给客户端。不完成模板解释或者HTML 转义
工作。
class HappyController < ApplicationController 
def index
render(:text => "Hello there!")或render :text=>'hello,threr!'
end
end


2、render(:inline =>string, [:locals=>hash_pair],[ :type =>"rhtml"|"rxml"] )
根据string动态生成模板并显示数据,其中has_pair指以哈希表键值对形式的数值。
例!
def test_inline 
render :inline=>"<%='hello'+word%>",:locals=>{:word=>"World"},:type=>"rhtml"
end


3、render(:action =>action_name)调用“控制器”内的给定动作提交执行结果。有时候有人会在应该使用redirect 的地方错误地使用render()的:action
def display_cart 
if @cart.empty?
render(:action => :index)
else
# ...
end
end


4、render(:file =>path, [ :use_full_path =>true|false] ) 提交给定路径(它必须包含在一个外部文件中)的模板。缺省地这应该是个给模板的绝对路径,但是如果:use_full_path 选项为true,只需要在path中指定相对路径即可,(相对于基本路径。模板的基本路径可设置在你的应用程序配置中)

5、render(:template =>name) 提交模板并重新排列要发送回客户端的结果文本。
:template 值必须包含“控制器”和“动作”的新名字这两个部分,并且用前向的反斜
线分开。下面代码将提交app/views/blog/short_list 模板。
class BlogController < ApplicationController 
def index
render(:template => "blog/short_list", :locals => {:name => "firedragon"})
end
end


6、render(:partial =>name, ...) 提交一个局部模板。

7、render(:nothing => true) 不提交任何东西—发送一个空体给浏览器。

8、render() 带有未经覆写的参数,render()方法提交缺省模板给当前“控制器”和“动
作”。下面代码将提交app/views/blog/index 模板。
class BlogController < ApplicationController 
def index
render
end
end


(如果没有动作,则“控制器”的缺省动作(index)会被调用)。
class BlogController < ApplicationController 
def index
end
end


(如果没有定义“动作”方法,则“控制器”将直接调用模板)。
class BlogController < ApplicationController 
end


render 的所有格式接受可选的:status 和:layout 参数。

:status 参数用于设置HTTP 应答内的header 状态。它缺省为”200 OK”。不要使用带有3xxx 状态的render()来重定向;Rails有个redirect()方法用于这个目的。

:layout 参数确定提交中的结果是否被包装成一个layout。如果参数是:false,则没有layout 被应用。如果设置为nil 或true。
则有个layout 将被应用,只要有个相关的当前“动作”。如果:layout 参数有字符串值,它在提交时将接受layout 的名字来使用。当:nothing 选项有效时,layout 将不会被应用。


[url]http://www.cnblogs.com/lwm-1988/archive/2011/08/29/2158941.html[/url]
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值