欢迎光临Software MyZone,有问题可留言或到站点论坛发帖,争取第一时间帮忙解决 || 站点论坛:火龙论坛 || 淘宝小店:应小心的易淘屋 【欢迎大家提建设性意见】

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 转义
工作。

Ruby代码 
  1. class HappyController < ApplicationController
  2. def index
  3. render(:text => ”Hello there!”)或render :text=>’hello,threr!’
  4. end
  5. end

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

Ruby代码 
  1. def test_inline
  2.    render :inline=>”<%=’hello’+word%>”,:locals=>{:word=>”World”},:type=>”rhtml”
  3. end

3、render(:action =>action_name)调用“控制器”内的给定动作提交执行结果。有时候有人会在应该使用redirect 的地方错误地使用render()的:action

Ruby代码 
  1. def display_cart
  2. if @cart.empty?
  3. render(:action => :index)
  4. else
  5. # …
  6. end
  7. 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 模板。

Ruby代码 
  1. class BlogController < ApplicationController
  2. def index
  3. render(:template => ”blog/short_list”, :locals => {:name => ”firedragon”})
  4. end
  5. end

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

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

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

Ruby代码 
  1. class BlogController < ApplicationController
  2. def index
  3. render
  4. end
  5. end

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

Ruby代码 
  1. class BlogController < ApplicationController
  2. def index
  3. end
  4. end

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

Ruby代码 
  1. class BlogController < ApplicationController
  2. end

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

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

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

 

详细参考:http://firedragonpzy.iteye.com/admin/blogs/1385245