010 重构用户名(第一部分)

简介:
Learn how to clean up your code through refactoring. This episode will show you how to move code from the view into the model to remove duplication and simplify the view.
 
 
学习如何通过重构来整理你的代码。这节将学习如何将视图中的代码放到模型里,从而简化代码,并消除视图中的重复代码。
 
一开始的代码:
 
#index.html
 
<h2>Users</h2>
<ul>
<%= for user in @users%>
  <li>
    <a href="<%= user_path(user)%>">
    <%= user.first_name%>
    <%= "#{user.middle_initial}." unless user.middle_initial.nil?%> 
    <%= user.last_name%> 
   </a>
  </li>
<% end %>
</ul>
 
 
#show.rhtml
 
<h1>Profile</h1>
<p>
Name:
    <%= user.first_name%>
    <%= "#{user.middle_initial}." unless user.middle_initial.nil?%> 
    <%= user.last_name%> 
</p>
<%= link_to "Users List", users_path%>
 
 
很明显,在两个视图中,对于名字的显示这部分代码首先是有了重复了。
 
对于名字的显示,分为三部分,first_name, middle_initial, last_name
对于middle_initial来说,如果存在才显示。
 
那么对于这种代码,要重构,首先想到的是使用helper。但是其中没有html代码,经过考虑,还是把他们放到model里最合适。所以:
在视图中对于名字的属性可以这么调用:
 
<h1>Profile</h1>
<p>
Name:
    <%= user.full_name%></p>
<%= link_to "Users List", users_path%>
 
在model里写一个full_name的方法:
 
# models/user.rb
def  full_name
  name = first_name +  " "
  name +=  "#{middle_initial}"  unless middle_initial.nil?
  name += last_name
  name
end




本文转自 fsjoy1983 51CTO博客,原文链接:http://blog.51cto.com/fsjoy/131601,如需转载请自行联系原作者
目录
相关文章
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
3197 0
|
1月前
|
存储 Java 数据安全/隐私保护
Java 入门核心知识点分类学习
Java入门按五大模块系统学习:基础语法、面向对象、常用工具类、异常处理、集合框架。结合代码示例,涵盖变量、流程控制、封装继承多态、String/Math类、try-catch、ArrayList/HashMap等核心知识点,助你快速掌握Java基础。
274 2
|
安全 开发工具 Android开发
【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat 命令执行目录 | 暴露更少信息 )(二)
【Android 安全】DEX 加密 ( Proguard 混淆 | 将混淆后的报错信息转为原始报错信息 | retrace.bat 命令执行目录 | 暴露更少信息 )(二)
250 0
|
4天前
|
数据采集 人工智能 安全
|
13天前
|
云安全 监控 安全
|
5天前
|
自然语言处理 API
万相 Wan2.6 全新升级发布!人人都能当导演的时代来了
通义万相2.6全新升级,支持文生图、图生视频、文生视频,打造电影级创作体验。智能分镜、角色扮演、音画同步,让创意一键成片,大众也能轻松制作高质量短视频。
1103 152
|
18天前
|
机器学习/深度学习 人工智能 自然语言处理
Z-Image:冲击体验上限的下一代图像生成模型
通义实验室推出全新文生图模型Z-Image,以6B参数实现“快、稳、轻、准”突破。Turbo版本仅需8步亚秒级生成,支持16GB显存设备,中英双语理解与文字渲染尤为出色,真实感和美学表现媲美国际顶尖模型,被誉为“最值得关注的开源生图模型之一”。
1781 9
|
10天前
|
人工智能 自然语言处理 API
一句话生成拓扑图!AI+Draw.io 封神开源组合,工具让你的效率爆炸
一句话生成拓扑图!next-ai-draw-io 结合 AI 与 Draw.io,通过自然语言秒出架构图,支持私有部署、免费大模型接口,彻底解放生产力,绘图效率直接爆炸。
709 152