书接上回
Rails应用开发体验(1)
这次开始记录一些具体开发的技术问题了...
业务信息的基本CRUD不再废话了,通过静态scaffold产生的页面具备全部功能,根据自己需要调整整合即可;
文件上传
应用中需要用到图片上传功能,文件上传是应用开发中遇到的第一个“棘手”问题,手头的Rails开发书籍和网上找到的资料都有对Rails处理图片上传的处理代码,但好像都是点到为止,说的不是很全面,自己磕磕绊绊总算开发通过了,将一些细节记录下来为其他开发者提供个参考;
首先文件上传使用的表单控件为
form.file_field。我这里处理文件上传主要是图片,不打算将图片直接保存在数据库字段中,而是将图片根据规则重命名后保存在指定图片文件夹中,数据库字段记录图片文件名。
关于图片直接随Model属性保存到数据库字段中的方法我就不详细说了,书上和网上介绍这种方式的示例很多,主要说一下Server端如何对上传文件进行再处理。
使用这个控件后前台页面直接就会展现文件上传控件,关键是服务端如何接收上传的文件,开发时一定要注意:
form.file_field中指定的object_name即为Model中处理文件上传方法的function_name,
object_name 和 function_name 必须保持一致(注意下面2段示例代码中的img);
View示例
<tr>
<td>会员头像:</td>
<td><%= f.file_field :img %></td>
</tr>
Model示例
class Item < ActiveRecord::Base
# 处理上传文件
def img=(file)
file_name = file.original_filename
file_data = file.read
# 将文件重命名后保存到指定文件夹
file_name = Time.now.strftime("%y%m%d%H%M%S") + "." + file_name.split(".")[-1]
# 这里的self.img_url是Model的真实属性,数据库中将保存此img_url
self.img_url= file_name
File.open(RAILS_ROOT + "/public/images/template/" + file_name, "wb") { |f| f.write(file_data) }
end
end
时间格式化
时间格式化在显示时经常要用到,比较容易。使用
strftime方法,具体的格式化关键字自己去查API吧;
# 将当前日志格式化为 09-12-28 14:33
time_str = Time.now.strftime("%y%m%d %H:%M")
Model中还有哪些属性
这段可能是废话,但起码我第一次开发时不太了解,也记录下来吧。除了我们generate scaffold时显示声明的Model中的属性,每个Model对象还有3个自动产生的属性;
1. id
2. created_at
3. updated_at
字段含义很明显,根据需要时选择调用吧;
日期控件date_select
Rails中自带的日期控件
form.date_select非常方便,直接显示年月日可选列表;但默认生成出来的可选日期范围是当前时间前后各5年,我这里需要用日期控件表示会员生日,前5年一定不够用啊。查找API,里面有明确可设参数说明,对我有用的:
1. 年份开始时间、结束时间可定,通过 :start_year, :end_year 指定
2. 月份时间不要英文的,直接显示数字,通过 :use_month_numbers 指定
3. 默认年份为xxxx,通过 :default 指定
示例代码
<%= f.date_select :birthday, :default => {:year => 1980, :month => 1, :day => 1}, :use_month_numbers => true, :start_year => 1960, :end_year => 2000 %>
今天先记录到这里吧,To Be Continue...
分享到:
相关推荐
总结以上内容,Ruby on Rails快速Web应用开发实战的文档详细介绍了Ruby编程语言和Rails框架的安装、配置以及使用。它涵盖了从Rails的历史和版本发展到如何在不同操作系统上安装Rails,再到如何使用Rails进行Web应用...
最后,测试是任何Rails应用不可或缺的一部分。使用RSpec进行行为驱动开发(BDD)测试,Rake任务自动化测试执行,确保购物车系统在功能上和性能上的健壮性。 总结,构建Rails敏捷开发的购物车系统涉及了模型-视图-...
- **ActiveResource**:这是一个用于客户端访问RESTful服务的库,使得Rails应用能够轻松地与其他RESTful服务进行交互。 总之,REST不仅仅是一种开发风格,更是一种设计理念,它提倡通过标准化的接口来构建灵活、可...
9. **部署**:如何将Rails应用部署到如Heroku或AWS等云平台,以及配置Nginx或Apache作为前端服务器。 通过学习《应用Rails进行敏捷Web开发》中文第三版,你不仅能掌握Rails 2.2.2的基本用法,还能深入理解Web开发的...
总的来说,“Ruby on Rails快速Web应用开发实战”将涵盖如何利用RoR的特性和最佳实践,从零开始创建一个功能完善的Web应用。学习者将深入理解MVC架构,掌握路由配置、数据库设计、视图渲染、测试驱动开发以及如何...
**标题与描述**:本书重视测试的重要性,详细介绍了如何为Rails应用编写各种类型的测试(如单元测试、功能测试等),并提供了一些调试技巧。 **详细说明**: - **测试类型**: - **单元测试**:针对单个模型或控制...
总的来说,这个教程系列将带领开发者逐步学习如何利用 Ruby on Rails 的灵活性和 Eclipse 的强大工具集,为 iPhone 用户提供定制的 Web 应用体验,而无需完全转向原生应用开发。通过这一过程,开发者可以平衡开发...
在Rails应用中,视图(View)部分通常包含HTML和CSS代码,通过 erb(Embedded Ruby)模板引擎,可以将Ruby代码嵌入到HTML中,实现动态内容的生成。 在实例开发过程中,我们可能首先会设置一个新的Rails项目,通过`...
《Web开发敏捷之道:应用Rails进行敏捷Web开发》是一本深入探讨如何利用Ruby on Rails框架进行高效、敏捷的Web应用程序开发的书籍。该书的第一版提供了名为"depot"的源代码示例,旨在帮助读者更好地理解Rails的工作...
这个实例工程将帮助我们了解如何在Rails应用中实现动态导航,提升用户体验。 首先,我们需要了解Rails中的路由(Routes)。Rails的路由系统负责将HTTP请求映射到控制器的动作上。在`config/routes.rb`文件中,我们...
Java框架在Web开发领域中占据着重要的地位,尤其是在企业级应用开发中。然而,尽管Java拥有庞大的社区支持和丰富的框架资源,但也面临着一些挑战。 ##### 2.1 复杂性问题 Java框架往往过于复杂,这主要体现在以下几...
这一章节将介绍如何在Rails应用中集成Ajax技术,实现更加交互式的用户体验。同时,还将探讨Web 2.0的概念,包括社会化网络、用户生成内容和实时数据流等。 #### 8. Protective Measures(防护措施) 网络安全是...
这个工具简化了在Rails项目中使用Go进行后端处理的流程,使开发者可以利用Go的性能优势处理高并发请求,同时保留Rails的便捷开发体验。 ### 2. 安装`GoOnRails` 首先,确保你的系统已经安装了Rails和Go。接下来,...
RoR遵循MVC(Model-View-Controller)架构模式,旨在简化Web应用开发,降低开发者的工作负担,提高开发效率。该框架的核心设计理念包括“Don’t Repeat Yourself”(DRY)和“Convention Over Configuration”(CoC...