今天在修改论坛的版主操作工具条时,偶然发现一个好东西,就是CaptureHelper中的Capture方法,可以很优雅的解决view中片段重复利用的问题。
设想一下这样的场景:论坛帖子页面需要为版主提供一个版主操作工具条,这个工具条件有好几个按钮,比如删帖,置精华和置顶等等,为生成这个工具条需要进行数量可观的条件判断以及html拼接。为方便版主使用,通常我们需要两个地方--顶部和底部都提供这个工具条。
按照通常的做法,把这两大段代码写上重复的两份,一份放在顶部,一份放在底部。这样导致的问题是:
1,重复的代码,修改维护起来特头疼,容易出错;
2,从执行效率来说,做两次重复的判断和拼接,不划算。
本着Rails DRY的原则,当然不允许这样的事情存在。今天发现Rails CaptureHelper中的Capture方法可以巧妙、优雅的解决这个问题。其实说起来也很简单,看一下下面的伪代码就明白了。
#这是view中的代码
<% toolbar_html = capture do %>
#这里是生成toolbar的大段判断和拼接代码
<% end %>
#这里是顶部版主工具条
<%=toolbar_html%>
......
#这里是底部版主工具条
<%=toolbar_html%>
其原理也简单,无非是把做为capture block参数的erb段先执行生成html放到一个临时变量中,再在页面重复使用。
后来看了一下will_paginate的页码控制html,也是用了capture来实现重复利用。
Ruby on Rails不愧是从第一线的web开发人员开发出来的现代web框架,很多非常便利web开发的小工具,能大幅提供生产率啊!
分享到:
相关推荐
Ruby on Rails中文指南
《Rails之道》详细讨论了Rails的程序代码并通过分析Rails中的代码片段来深入解释它的功能,同时,《Rails之道》部分章节也摘录了一些API文档中的内容,使读者能够快速地找到对应的API文档、相关的示例代码以及深入...
Ruby On Rails中文教材(PDF)
shoppe-example, 在 Rails 中使用Shoppe平台的示例存储实现 这是一个 Rails 应用程序,它使用 Shoppe 构建。 它具有一个可以爱的设计,以充分演示Shoppe平台提供的功能以及它在 Rails 应用程序中的。 正在启动要开始...
敏捷Rails中文教程 敏捷Rails中文教程 敏捷Rails中文教程
Google Sign-In for Rails 实现将Google登录集成到您的Rails应用中
简介 Ruby On Rails 框架自它提出之日...Rails 是一个真正彻底的 MVC(Model-View-Controller) 框架,Rails 清楚地将你的模型的代码与你的控制器的应用逻辑从 View 代码中分离出来。Rails 开发人员很少或者可能从未遇到
rails指南 中文版
Knock - 为Rails API实现无缝JWT身份验证
rails-assets, 在 Rails 中,资产管理的解决 Rails 资产 Bundler 到 Bower 代理本自述文件涉及项目的开发方面。 访问站点了解如何在你的应用程序中使用 Rails 资产。 插件开发设置git clone git@github.com:tenex/r
入门rails的第一个demo
字体配制文件 博文链接:https://babo.iteye.com/blog/72298
使用Aptana+Rails开发Rails Web应用 有Aptana的安装配置等等,中文
Swish 是一个代码片段共享应用程序。 它的灵感来自的概念,重点是开发人员而不是设计师。 Swish 也是我在明尼苏达大学 INET 3350(Ruby/Rails)课程的最后一个项目,由 John Norman 教授。 这是一个纯粹的教育项目,...
基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码.zip基于ruby on rails框架实现的音乐推荐网站项目源码...
You’ll learn how to create something visible with Rails’ view layer before diving into the more difficult inner layers: the database models and controller code. All you need to begin your Rails ...
rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails 2.3.2离线安装rails ...
rails_email_preview, 在 Rails 中,预览和编辑应用程序邮件程序模板 Rails 电子邮件预览 使用这里 Rails 引擎在浏览器中预览电子邮件。 兼容 Rails 4.2 。电子邮件审阅: 所有电子邮件预览的列表: 代表有两个主题...