- 浏览: 273961 次
- 性别:
- 来自: 尤溪
文章分类
最新评论
-
palytoxin:
我现在也发现是这样
关于分享 -
float2net:
Java社区,分享有利于提高。
关于分享 -
hz_qiuyuanxin:
头晕啊,啊邱
RSpec学习笔记 -
reyesyang:
...
关于分享 -
Hooopo:
一般实现map都先实现each
在 Ruby 中对树状结构(tree)进行 map 操作
参考链接:http://guides.rubyonrails.org/layouts_and_rendering.html
render
如果action中没有调用render、redirect_to、head和method_missing方法中的任何一个,rails默认会去渲染和当前action名字相对应的那个模板。比如一个BooksController里有这样一段代码:
rails将会在执行完show方法后渲染 app/views/books/show.html.erb 模板。
如果你希望给浏览器发送一个空的响应信息,可以使用:nothing选项:
render的第一个参数如果是一个string或者symbol,rails则会去渲染同一个controller下的某action对应的模板,比如:
上面的代码在@book.update_attributes方法返回false时,将会去渲染这个controller中edit这个action对应的模板。下面的代码有同样的效果,只是在Rails2.3中没必要写得这么麻烦:
如果要渲染的是另一个controller的模板,可以在render方法的参数中直接指定那个模板的路径(相对于app/views的相对路径),比如说你要在app/controllers/admin下的AdminProductsController中渲染app/views/products/show.html.erb模板,可以这样调用render:
下面的代码有同样的效果,只是在Rails2.3中没必要写得这么麻烦:
还可以渲染其它任意位置的模板文件,比如说在某种情况下,两个rails应用共享了同一个模板文件:
rails根据参数的第一个字符是否"/"来判断这是不是一个file render(怎么翻译? - -)。
下面的代码有同样的效果,只是在Rails2.3中没必要写得这么麻烦:
默认的,file render不使用当前的layout,如果你打算让它使用当前的layout,必须指定:layout=>true。
注意:如果你的rails运行在Microsoft Windows上,则必须使用:file选项来渲染文件,因为Windows文件名的格式和Unix不一样。
:inline选项可以让render方法渲染一个字符串,而不是一个erb模板:
几乎没有什么理由使用:inline这个选项,在controller逻辑中混入ERB代码违反了Rails的MVC原则并且使其它开发者难以理解你的程序逻辑。最好是用分离了"逻辑"和"表现"的erb模板来代替:inline选项。
inline rendering默认使用ERB,你也可以通过指定:type选项来强制它使用Builder:
通过:text选项可以把一个纯文本内容发送给浏览器:
和file render一样,默认的,:text选项不使用当前的layout,如果你打算让它使用当前的layout,必须指定:layout=>true。
渲染json
很简单:
渲染xml
同json:
Rendering Vanilla JavaScript
Options for render
render方法还接受4个选项:
:content_type
:layout
:status
:location
:content_type
:layout
:status
:location
render
如果action中没有调用render、redirect_to、head和method_missing方法中的任何一个,rails默认会去渲染和当前action名字相对应的那个模板。比如一个BooksController里有这样一段代码:
def show @book = Book.find(params[:id]) end
rails将会在执行完show方法后渲染 app/views/books/show.html.erb 模板。
引用
If you want to see the exact results of a call to render without needing to inspect it in a browser, you can call render_to_string. This method takes exactly the same options as render, but it returns a string instead of sending a response back to the browser.
如果你希望给浏览器发送一个空的响应信息,可以使用:nothing选项:
render :nothing=>true
render的第一个参数如果是一个string或者symbol,rails则会去渲染同一个controller下的某action对应的模板,比如:
def update @book = Book.find(params[:id]) if @book.update_attributes(params[:book]) redirect_to(@book) else render "edit" #OR render :edit end end end
上面的代码在@book.update_attributes方法返回false时,将会去渲染这个controller中edit这个action对应的模板。下面的代码有同样的效果,只是在Rails2.3中没必要写得这么麻烦:
def update @book = Book.find(params[:id]) if @book.update_attributes(params[:book]) redirect_to(@book) else render :action=>'edit' end end end
如果要渲染的是另一个controller的模板,可以在render方法的参数中直接指定那个模板的路径(相对于app/views的相对路径),比如说你要在app/controllers/admin下的AdminProductsController中渲染app/views/products/show.html.erb模板,可以这样调用render:
render 'products/show'
下面的代码有同样的效果,只是在Rails2.3中没必要写得这么麻烦:
render :template => 'products/show'
还可以渲染其它任意位置的模板文件,比如说在某种情况下,两个rails应用共享了同一个模板文件:
render "/u/apps/warehouse_app/current/app/views/products/show"
rails根据参数的第一个字符是否"/"来判断这是不是一个file render(怎么翻译? - -)。
下面的代码有同样的效果,只是在Rails2.3中没必要写得这么麻烦:
render :file => "/u/apps/warehouse_app/current/app/views/products/show"
默认的,file render不使用当前的layout,如果你打算让它使用当前的layout,必须指定:layout=>true。
注意:如果你的rails运行在Microsoft Windows上,则必须使用:file选项来渲染文件,因为Windows文件名的格式和Unix不一样。
:inline选项可以让render方法渲染一个字符串,而不是一个erb模板:
render :inline => "<% products.each do |p| %><p><%= p.name %><p><% end %>"
几乎没有什么理由使用:inline这个选项,在controller逻辑中混入ERB代码违反了Rails的MVC原则并且使其它开发者难以理解你的程序逻辑。最好是用分离了"逻辑"和"表现"的erb模板来代替:inline选项。
inline rendering默认使用ERB,你也可以通过指定:type选项来强制它使用Builder:
render :inline => "xml.p {'Horrid coding practice!'}", :type => :builder
引用
Using render with :update
You can also render javascript-based page updates inline using the :update option to render:
Placing javascript updates in your controller may seem to streamline small updates, but it defeats the MVC orientation of Rails and will make it harder for other developers to follow the logic of your project. We recommend using a separate rjs template instead, no matter how small the update.
You can also render javascript-based page updates inline using the :update option to render:
render :update do |page| page.replace_html 'warning', "Invalid options supplied" end
Placing javascript updates in your controller may seem to streamline small updates, but it defeats the MVC orientation of Rails and will make it harder for other developers to follow the logic of your project. We recommend using a separate rjs template instead, no matter how small the update.
通过:text选项可以把一个纯文本内容发送给浏览器:
render :text =>'hello'
引用
Rendering pure text is most useful when you’re responding to AJAX or web service requests that are expecting something other than proper HTML.
和file render一样,默认的,:text选项不使用当前的layout,如果你打算让它使用当前的layout,必须指定:layout=>true。
渲染json
很简单:
render :json=>@product
引用
You don’t need to call to_json on the object that you want to render. If you use the :json option, render will automatically call to_json for you.
渲染xml
同json:
render :xml=>@product后面的那小段英文就不多引用了,一样。
Rendering Vanilla JavaScript
render :js => "alert('Hello Rails');"
Options for render
render方法还接受4个选项:
:content_type
:layout
:status
:location
:content_type
引用
By default, Rails will serve the results of a rendering operation with the MIME content-type of text/html (or application/json if you use the :json option, or application/xml for the : xml option.). There are times when you might like to change this, and you can do so by setting the :content_type option:
render :file => filename, :content_type => 'application/rss'
:layout
引用
You can use the :layout option to tell Rails to use a specific file as the layout for the current action:
You can also tell Rails to render with no layout at all:
render :layout => 'special_layout'
You can also tell Rails to render with no layout at all:
render :layout => false
:status
引用
Rails will automatically generate a response with the correct HTML status code (in most cases, this is 200 OK). You can use the :status option to change this:
Rails understands either numeric status codes or symbols for status codes. You can find its list of status codes in actionpack/lib/action_controller/status_codes.rb. You can also see there how Rails maps symbols to status codes.
render :status => 500 render :status => :forbidden
Rails understands either numeric status codes or symbols for status codes. You can find its list of status codes in actionpack/lib/action_controller/status_codes.rb. You can also see there how Rails maps symbols to status codes.
:location
引用
You can use the :location option to set the HTTP Location header:
render :xml => photo, :location => photo_url(photo)
发表评论
-
rails测试中遇到的一些问题
2010-09-03 11:41 25091,页面的测试。 假设某view中有一个表单,表单里有3个字段 ... -
BDD on Rails
2010-05-11 02:59 0首先,嘿嘿,我对敏捷 ... -
强大的 Rails 2 查询、搜索插件:SearchLogic
2010-04-20 23:31 5423发现还有人在看这个博客,这个 SearchLogic 只支持 ... -
authlogic-openid
2010-04-20 00:32 0http://github.com/binarylogic/a ... -
测试驱动开发实战(authlogic学习笔记)
2010-04-17 00:06 0这会是个很cool的笔记 cucumber还不会用,只用R ... -
RoR简单培训。
2010-04-12 10:08 0目的 上周二Bob给大家从总体上概括了一下Rails的开发。我 ... -
用RSpec和Webrat为页面写测试
2010-03-10 23:26 0The RSpec Book 23章(不完全照书上记,而是我自 ... -
rails杂记
2010-03-08 11:36 1423=======Rails2======= 用RSpec测试A ... -
Rails文件上传利器——paperclip笔记
2010-02-27 12:04 14928Githubhttp://wiki.github.com/th ... -
为SearchLogic添加一个remote_form_for方法。
2010-02-10 15:00 1377稍微看了一下,好像挺简单,只是处理了一下参数。 # A ... -
A Guide to Testing Rails Applications
2010-02-03 19:56 0什么是Fixtures fixtures允许你在测试运行之前往 ... -
改个bug
2010-01-20 17:38 1205问题见:http://yuan.iteye.c ... -
reset/reload
2010-01-20 16:26 1125http://caboo.se/doc/classes/Act ... -
Acts As Taggable On Steroids
2010-01-20 13:53 2593参考着mephisto写blog程序 ... -
Active Record Validations and Callbacks
2009-10-18 02:45 2361参考链接:http://guides.ru ... -
Layout in Rails
2009-10-12 17:28 4731参考链接:http://guides.rubyonrails. ... -
如何为Rails的views写测试。
2009-10-01 16:53 1108原文链接:http://weblog.jamisbuck.or ... -
Rails Form helpers
2009-09-28 03:31 5160参考链接:http://guides.ru ... -
rails2.3 routes笔记
2009-09-23 04:10 2823参考链接:http://guides.ru ... -
rails中分模块开发。
2009-09-18 14:48 2299我没事就喜欢拿blog练手,blog简单嘛。 嗯,其实这是 ...
相关推荐
Practical Physically Based Rendering in Real-time
《Advanced Real Time Rendering in 3D Graphics and Games》是一本专为游戏开发和实时渲染技术设计的专业书籍。这本书深入探讨了3D图形学的核心概念,特别是如何在游戏环境中实现高效且高质量的实时渲染。实时渲染...
“FrameGraph: Extensible Rendering Architecture in Frostbite” – Yuriy O’Donnell (Frostbite / Electronic Arts)
### 高级实时渲染在3D图形与游戏中的应用 #### 核心概念与背景介绍 随着技术的进步和GPU计算能力的不断增强,高级实时渲染技术已成为3D图形和游戏开发领域的重要研究方向之一。该技术旨在提高虚拟世界的交互性和...
体积渲染技术在医学应用中,主要指的是利用三维图像合成技术将医学扫描设备获取的二维图像切片转化为三维图像。该技术通过图像渲染算法,结合照明、分类、合成方案等必要成分,生成可视化的三维图像,帮助医生和放射...
### 实时渲染技术进展课程概览 随着实时图形研究的进步及主流GPU能力的提升,我们见证了创新算法在渲染复杂虚拟世界的交互速率上的显著成效。每年,最新的电子游戏都会展示出一系列复杂的算法,这些算法推动了3D...
《神秘海域4:盗贼末路》(Uncharted 4)作为一款第三人称动作冒险游戏,玩家可以在其中体验到全球各地的异国风情,寻找冒险和宝藏。虽然游戏本身并不主打水元素,但是水——以各种形态呈现——一直是游戏中一个关键...
以上都是在"Real-time Rendering Tricks and Techniques in DirectX"这个主题下可能涵盖的一些关键概念。通过深入理解和应用这些技术,开发者能够构建出流畅、高质量的实时渲染应用程序。在压缩包中的"bookcode"文件...
《KeyShot Network Rendering 使用详解与常见问题解决》 KeyShot Network Rendering 是一款强大的网络渲染工具,专为提高渲染效率而设计。它允许用户利用多台计算机的计算资源,协同完成复杂的3D场景渲染任务,尤其...
Crafting a perfect rendering in 3D software means nailing all the details. And no matter what software you use, your success in creating realistic-looking illumination, shadows and textures depends on...
本书《实时渲染技巧与技术在DirectX中的应用》(Real-Time Rendering Tricks and Techniques in DirectX)是一本全面介绍如何利用DirectX进行实时图形渲染的专业书籍。DirectX是微软开发的一套多媒体编程接口,被...
### Blender 2.5 Lighting and Rendering #### 一、引言 《Blender 2.5 Lighting and Rendering》是一本由Aaron W. Powell撰写的书籍,该书详细介绍了如何使用Blender 2.5版本进行照明和渲染的技术。本书不仅为初学...
Unstructured Lumigraph Rendering.PDF
Algorithms for animation, geometric modeling, and texturing all must feed their results through some sort of rendering process for the results to be visible in an image. PBR渲染的一本极好的书籍
Rails中的渲染(Rendering)是另一个重要知识点,涵盖了渲染参数的汇总与详解,以及Rails的其他渲染相关方法。渲染是将数据转换为HTML或其他格式并输出给客户端的过程。Rails提供多种渲染方法,包括渲染HTML模板、...
Ruby on Rails (often shortened as Rails) is a server-side web application framework written in Ruby under the MIT License. It uses Model-View-Controller (MVC) architecture and emphasizes convention ...
Real-Time Rendering 4rd最新版,高清大概800M,详细介绍渲染知识