看一个Shopping Cart的例子:
Full Price:
<% if line_item.unit_price == 0 %>
<td class="price">FREE</td>
<% else %>
<td class="price">
<%= number_to_currency(line_item.unit_price*line_item.quantity) %>
</td>
<% end %>
<%
total = @cart.line_items.to_a.sum do |line_item|
line_item.unit_price*line_item.quantity
end
%>
Total Price: <%= number_to_currency total %>
视图中嵌入太多的逻辑代码,非常难看,bad smell,我们应该将将这些代码提取出来,写在Model或helper里:
# models/line_item.rb
def full_price
unit_price*quantity
end
# models/cart.rb
def total_price
line_item.to_a.sum(&:full_price)
end
# helpers/carts_helper.rb
def free_when_zero(price)
price.zero? ? "FREE" : number_to_currency(price)
end
这样页面代码就干净多了:
<!-- views/carts/show.rhtml -->
Full Price:
<%= render: partial => 'line_item', :collection => @cart.line_items %>
Total:
<%= number_to_currency @cart.total_price %>
<!-- views/carts/_line_item.rhtml -->
<%= free_when_zero(line_item.full_price) %>
分享到:
相关推荐
Rails::API 是 Rails 的精简版本,针对不需要使用完整 Rails 功能的开发者。 Rails::API 移除了 ActionView 和其他一些渲染功能,不关心Web前端的开发者可更容易、快速地开发应用程序,因此运行速度比正常的 Rails ...
在Ruby on Rails(Rails)框架中,开发人员经常需要实现各种...通过学习这个实例,开发者可以掌握如何在Rails应用中集成第三方库,处理层级数据,以及创建交互式的前端界面。这对于提升Web应用的用户体验非常有价值。
首先,让我们了解一下Rails的主要组件: 1. **Model**:模型是应用程序中的数据层,它与数据库交互,负责业务逻辑和数据验证。在Rails中,我们通常使用ActiveRecord库来创建模型,通过继承`ApplicationRecord`类并...
Ruby on Rails,通常简称为Rails,是一个基于Ruby语言的开源Web应用程序框架,它遵循MVC(模型-视图-控制器)架构模式,以简洁、高效的代码和“约定优于配置”的理念著称。此压缩包中的"rubyonrails21-cn.pdf"可能是...
### Ruby on Rails Guides v2 - Ruby on Rails 4.2.5 #### 一、重要概念及基础假设 - **重要概念**:本指南旨在帮助读者深入理解Ruby on Rails(以下简称Rails)4.2.5版本的核心功能与最佳实践。 - **基础假设**:...
### Rails 101S: 初学者必备的Ruby on Rails 宝典 #### Introduction: 深入了解Ruby on Rails 《Rails 101S》是一本为Ruby on Rails初学者准备的手册,旨在帮助新手快速入门并掌握基本的开发技能。本手册将从最...
- 学习如何创建第一个Rails应用程序。 - **过程**: - 创建新项目。 - 设置数据库配置。 - 创建控制器和视图。 - 在浏览器中查看结果。 #### 六、Rails的路由 - **概念介绍**: 路由是连接用户请求URL与应用...
Ruby on Rails,简称Rails,是基于Ruby语言的一个开源Web应用程序框架,它遵循MVC(Model-View-Controller)架构模式,旨在使Web开发过程更加高效、简洁。本压缩包中的"Ruby on Rails入门经典代码"提供了新手学习...
Rails指南中文版是针对Ruby on Rails框架的一份详尽教程,旨在帮助开发者深入理解并熟练掌握这个强大的Web应用开发工具。Ruby on Rails(简称Rails)是一个基于Ruby语言的开源Web应用框架,它遵循MVC(Model-View-...
Ruby on Rails,通常简称为Rails,是一个基于Ruby编程语言的开源Web应用框架,遵循MVC(Model-View-Controller)架构模式。这个“Rails项目源代码”是一个使用Rails构建的图片分享网站的完整源代码,它揭示了如何...
Ruby on Rails是一个流行的开源Web应用框架,用于快速开发高效、优雅的Web应用。在实际运行过程中,性能监控是确保应用程序顺畅运行的关键环节。本话题主要关注如何使用Ruby编写日志分析器来洞察Rails应用中视图渲染...
Rails,全称为Ruby on Rails,是一款基于Ruby编程语言的开源Web应用程序框架,以其MVC(模型-视图-控制器)架构模式而闻名。"Advanced Rails" 涵盖了Rails开发中的高级主题和技术,是Ruby on Rails学习进阶的重要...
标题中的“Ruby-get Schwifty”是一个工具或方法,它利用了Ruby on Rails框架中的两个关键组件:ActiveJob和ActionCable。在Rails应用中,ActiveJob是处理后台任务的抽象层,而ActionCable则是实现Websocket通信的库...
首先,让我们深入理解Rails的核心概念: 1. **路由(Routes)**:Rails的路由系统是应用程序的导航蓝图,它将HTTP请求映射到控制器的动作上,帮助定义URL结构。通过配置`config/routes.rb`文件,你可以设置各种路由...
- `$ rails c` 或 `$ rails console`:启动Rails控制台,进行交互式编程。 - `$ rails server -p 3001`:在端口3001启动服务器。 - `$ rake doc:rails`:生成Rails API文档。 - `$ rails dbconsole`:打开数据库...
Ruby-Cells是一个强大的Ruby库,专门用于构建复杂的Rails视图组件。它允许开发者将视图逻辑分解成独立、可重用的部分,提高了代码的可维护性和可读性。Cells的设计理念是将视图拆分为小型、自包含的单元,每个单元都...
标题 "Rails" 指的是 Ruby on Rails,一个开源的Web应用程序框架,它基于Ruby编程语言,遵循MVC(模型-视图-控制器)架构模式。Rails由David Heinemeier Hansson在2004年创建,其设计理念是强调代码的简洁性、DRY...
14. **Rails Console和Rails Server**:命令行工具用于交互式测试和运行Rails应用。 15. **部署**:了解如何将Rails应用部署到Heroku、AWS或其他云平台是实际开发中的重要环节。 Rails的开发文档详尽且全面,涵盖...