- 浏览: 2689018 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
80后的童年2:
深入浅出MongoDB应用实战开发网盘地址:https://p ...
MongoDB入门教程 -
shliujing:
楼主在不是精通java和php的前提下,请不要妄下结论。
PHP、CakePHP哪凉快哪呆着去 -
安静听歌:
希望可以一给一点点注释
MySQL存储过程之代码块、条件控制、迭代 -
qq287767957:
PHP是全宇宙最强的语言!
PHP、CakePHP哪凉快哪呆着去 -
rryymmoK:
深入浅出MongoDB应用实战开发百度网盘下载:链接:http ...
MongoDB入门教程
partials是Rails模板重用的一项重要技术,让我们来读读partials.rb源码文件:
主要使用的方法就是public的render_partial和render_partial_collection,代码非常清楚
比较吸引眼球的地方是add_object_to_local_assigns!的方法实现, ||= ||这种连续||的方式还是第一次见到
下面是使用例子:
1, common render partials
在Advertiser下面的某个rhtml模板里面:
上面的代码将渲染advertiser/_account.rhtml和advertiser/_ad.rhtml,:locals为变量Hash
2,render partials collection
上面我们用for语句来render多个相同的partials,其实有更简洁的方法:
3,render shared partials
给:partial参数的模板文件加上包名路径,这样可以在任何controller和模板里使用
这样我们可以在除了AdvertisementController及相应模板之外的地方也使用advertisement/_ad.rhtml
module ActionView module Partials def render_partial(partial_path, local_assigns = nil, deprecated_local_assigns = nil) path, partial_name = partial_pieces(partial_path) object = extracting_object(partial_name, local_assigns, deprecated_local_assigns) local_assigns = extract_local_assigns(local_assigns, deprecated_local_assigns) local_assigns = local_assigns ? local_assigns.clone : {} add_counter_to_local_assigns!(partial_name, local_assigns) add_object_to_local_assigns!(partial_name, local_assigns, object) if logger ActionController::Base.benchmark("Rendered #{path}/_#{partial_name}", Logger::DEBUG, false) do render("#{path}/_#{partial_name}", local_assigns) end else render("#{path}/_#{partial_name}", local_assigns) end end def render_partial_collection(partial_name, collection, partial_spacer_template = nil, local_assigns = nil) collection_of_partials = Array.new counter_name = partial_counter_name(partial_name) local_assigns = local_assigns ? local_assigns.clone : {} collection.each_with_index do |element, counter| local_assigns[counter_name] = counter collection_of_partials.push(render_partial(partial_name, element, local_assigns)) end return " " if collection_of_partials.empty? if partial_spacer_template spacer_path, spacer_name = partial_pieces(partial_spacer_template) collection_of_partials.join(render("#{spacer_path}/_#{spacer_name}")) else collection_of_partials.join end end private def extract_local_assigns(local_assigns, deprecated_local_assigns) local_assigns.is_a?(Hash) ? local_assigns : deprecated_local_assigns end def add_counter_to_local_assigns!(partial_name, local_assigns) counter_name = partial_counter_name(partial_name) local_assigns[counter_name] = 1 unless local_assigns.has_key?(counter_name) end def add_object_to_local_assigns!(partial_name, local_assigns, object) local_assigns[partial_name.intern] ||= if object.is_a?(ActionView::Base::ObjectWrapper) object.value else object end || controller.instance_variable_get("@#{partial_name}") end end end
主要使用的方法就是public的render_partial和render_partial_collection,代码非常清楚
比较吸引眼球的地方是add_object_to_local_assigns!的方法实现, ||= ||这种连续||的方式还是第一次见到
下面是使用例子:
1, common render partials
在Advertiser下面的某个rhtml模板里面:
<%= render :partial => "account", :locals => { :account => @buyer } %> <% for ad in @advertisements %> <%= render :partial => "ad", :locals => { :ad => ad } %> <% end %>
上面的代码将渲染advertiser/_account.rhtml和advertiser/_ad.rhtml,:locals为变量Hash
2,render partials collection
上面我们用for语句来render多个相同的partials,其实有更简洁的方法:
<%= render :partial => "ad", :collection => @advertisements %>
3,render shared partials
给:partial参数的模板文件加上包名路径,这样可以在任何controller和模板里使用
<%= render :partial => "advertisement/ad", :locals => { :ad => @advertisement } %>
这样我们可以在除了AdvertisementController及相应模板之外的地方也使用advertisement/_ad.rhtml
发表评论
-
用了TextMate才知道什么叫神级Editor
2011-03-09 04:51 58016一直用Eclipse作为开发Ruby和Java项目的IDE,但 ... -
Ruby使用OAuth登录新浪微博和豆瓣
2011-01-09 12:49 4493首先需要安装oauth这个gem包 gem install ... -
使用Passenger+nginx部署Rails
2010-12-28 15:12 50531. Install Passender gem instal ... -
markItUp+rdiscount搭建Rails下可视化Markdown编辑器
2010-12-21 17:48 5491markItUp是基于jQuery的可视化编辑器,支持Html ... -
Rails3 and MongoDB Quick Guide
2010-12-10 14:13 2773Install MongoDB Download: http: ... -
基于ruby-protobuf的rpc示例
2009-08-11 11:51 41651, 安装ruby-protobuf gem instal ... -
Ruby导出xls和csv的utf-8问题的解决
2009-02-04 15:05 6878数据库数据为utf-8格式,包括中文和拉丁文等等 导出文件xl ... -
URL/HTML/JavaScript的encode/escape
2009-01-04 13:03 9369最近经常被URL、HTML、JavaScript的encode ... -
各种排序的Ruby实现
2008-11-27 14:51 4020Θ(n^2) 1, Bubble sort def bu ... -
12月5日北京RoR活动!
2008-11-26 18:38 3029又是一年过去了,Rails在国内的发展势态良好,很多使用RoR ... -
Rails程序开发的最大问题是代码规范
2008-08-28 11:56 5647使用Rails开发大型复杂B2B应用一年了,这个项目目前开发人 ... -
Web开发大全:ROR版——推荐序
2008-07-09 00:39 2438来自http://www.beyondrails.com/bl ... -
深入ActionMailer,使用Sendmail发邮件
2008-07-03 11:41 3407来自: http://www.beyondrails.com/ ... -
Rails里如何结合ExceptionNotification配置gmail账户发邮件
2008-06-19 19:56 31201,安装ExceptionNotification rub ... -
使用coderay和railscasts样式进行代码高亮
2008-06-17 00:16 2412CodeRay是一个语法高亮的Ruby库,效率很不错。 Cod ... -
Capistrano试用
2008-06-16 19:05 19721,客户端机器安装Capistrano gem insta ... -
lighttpd真垃圾啊
2008-06-04 18:38 2559使用lighttpd+fcgi跑Rails程序,文件上传会si ... -
将gem变成plugin
2008-06-04 11:27 1824有什么样的需求就有什么样的对策 当vhost上的帐号没有ge ... -
在Rails里使用ReCaptcha添加验证码
2008-06-03 15:51 42851,去http://recaptcha.net/sign up ... -
Rails里给文件上传添加progress_bar
2008-05-27 17:00 2111文件上传很慢时,UI没有什么用户提示,这样让人很费解,所以我们 ...
相关推荐
Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails 应用程序要快。 Rails::API 可以用来创建只提供API服务(API-Only)的 Rails ...
在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种用户交互功能,例如三级联动选择,这在处理如中国省市区这样的地理数据时尤其常见。这篇博客文章“Rails中应用Ext.tree:以中国的省市地区三级联动选择为...
《Rails Exporter 源码解析》 Rails Exporter 是一个用于 Rails 应用程序的开源工具,主要用于数据导出功能。源码分析将帮助我们深入理解其内部工作原理,以便更好地利用它来优化我们的应用。 一、Rails 框架基础 ...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
Ruby on Rails,简称Rails,是基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-Controller)架构模式,旨在使开发过程更加简洁高效。这个“ruby on rails 教程源码”很可能是为了辅助学习者深入理解Rails的...
1. Rails 3.0: Rails 3是重大升级,引入了ActionController::Metal,这是一个轻量级的控制器,用于提高性能。同时,它引入了多路由引擎支持,如Rack中间件,使得与其他Web服务器的集成更加容易。此外,ActiveRecord...
《Rails 3 in Action》是2011年由Ryan Bigg撰写的一本关于Ruby on Rails框架的权威指南,专门针对当时最新的Rails 3.1版本进行了深入解析。这本书旨在帮助开发者充分利用Rails 3.1的强大功能,提升Web应用开发的效率...
8. **Rails源码解析**:探讨Rails内部工作原理,如ActionController、ActionView和ActiveSupport库的源码。 9. **Rails最佳实践**:学习如何编写可维护、可扩展的代码,遵循DRY(Don't Repeat Yourself)和SOLID...
本书源码 博文链接:https://msnvip.iteye.com/blog/139752
《深入解析bhl_rails_solr源码》 在当今的Web开发领域,Rails框架以其高效、简洁的设计理念,深受开发者喜爱。同时,Solr作为一款强大的全文搜索引擎,被广泛应用于各类复杂的数据检索场景。当这两者结合时,便诞生...
为了帮助读者更好地理解和应用所学知识,**Rails 4 in Action, 第二版** 包含了一系列案例研究和实战项目,例如: - **电子商务网站开发**:从零开始构建一个完整的电子商务平台,涵盖商品管理、订单处理等功能。 -...
Rails的许多特性,如ActiveRecord(ORM)、ActiveModel、ActionController和ActionView,都是为了支持这种分层架构。 压缩包中的`seanatnci-rails_space-53c56b4`可能是一个具体的Rails项目仓库,包含以下关键组成...
标题中的“Web开发敏捷之道--应用Rails进行敏捷Web开发 之 Depot代码”表明这是一个关于使用Ruby on Rails框架进行敏捷Web开发的示例项目,名为Depot。Ruby on Rails(简称Rails)是一个开源的Web应用程序框架,它...
标题 "Rails相关电子书汇总" 暗示了这个压缩包包含了关于Ruby on Rails框架的电子书籍资源。Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,以...
rails5-docker-alpine:使用Alpine Linux的Rails轻量级Docker开发环境
Ruby on Rails(简称Rails)是一种基于Ruby编程语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,旨在提高开发效率和可读性。Rails的哲学强调“约定优于配置”和“Don't Repeat Yourself”(DRY...
Ruby on Rails,简称Rails,是一种基于Ruby语言的开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本篇将通过一个入门实例,深入探讨Rails的基本概念和核心...