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,如需转载请自行联系原作者
目录
相关文章
|
5月前
|
存储 Java 数据安全/隐私保护
Java 入门核心知识点分类学习
Java入门按五大模块系统学习:基础语法、面向对象、常用工具类、异常处理、集合框架。结合代码示例,涵盖变量、流程控制、封装继承多态、String/Math类、try-catch、ArrayList/HashMap等核心知识点,助你快速掌握Java基础。
415 3
|
4月前
|
JavaScript Shell API
阿里云百炼 API 调用教程:准备 API-Key、配置环境变量和调用 API 流程
在使用阿里云百炼平台的大模型能力时,API 调用是核心环节 —— 无论是开发 AI 应用、测试模型效果,还是搭建智能服务,都需要通过 API 将大模型能力集成到自己的系统中。不过对很多开发者来说,从准备密钥到实际调用的流程可能存在疑问,比如 “API-Key 怎么获取”“环境变量配置有什么用”“不同语言怎么写调用代码”。本文结合最新的实操细节,用通俗的语言把整个流程拆解开,从账号准备到多语言调用,每一步都附具体操作和代码示例,帮大家快速上手。
|
应用服务中间件 Linux nginx
FFmpeg学习笔记(一):实现rtsp推流rtmp以及ffplay完成拉流操作
这篇博客介绍了如何使用FFmpeg实现RTSP推流到RTMP服务器,并使用ffplay进行拉流操作,包括在Windows和Linux系统下的命令示例,以及如何通过HTML页面显示视频流。
3779 0
|
存储 数据安全/隐私保护
验证用户名和密码的正则表达式
验证用户名和密码的正则表达式
|
存储 小程序 前端开发
uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)
uniapp微信小程序不强制登陆的逻辑(模仿大厂登陆)
686 0
|
存储 前端开发 算法
深度优先搜索(DFS)和广度优先搜索(BFS)
深度优先搜索(DFS)和广度优先搜索(BFS)
876 0
|
计算机视觉
opencv进行canny边缘检测
opencv进行canny边缘检测
181 0
|
存储 Linux Shell
虚拟机安装(安装(克隆)虚拟机 配置网络 安装Centos7 配置(修改)虚拟机的静态IP 修改网卡的配置文件 测试网络是否互通外部工具 连接linux系统 设置服务器时间 修改主机名)(下)
虚拟机安装(安装(克隆)虚拟机 配置网络 安装Centos7 配置(修改)虚拟机的静态IP 修改网卡的配置文件 测试网络是否互通外部工具 连接linux系统 设置服务器时间 修改主机名)
879 0
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务2
java202304java学习笔记第五十二天员工管理-阿里云oss-集成服务2
153 0