Rails学习笔记(3)

按照敏捷web开发 第四版学习rails,其中遇到的最大问题就是因rails版本差异所造成的一些问题。下面是自己在学习该书中的一些笔记和体会,写下来和大家一起分享下。

  • 我的rails环境
 OS:Ubuntu 12.04 LTS
 Rails:3.28
 Ruby:  1.87

  • 书上的一些问题
ITERATION A2 中关于对app/views/layouts/application.html.erb的修改。因为书上rails的版本是3.0,当时还没有引进asset pipeline的概念,因此在加入css文件后需要修改。但在3.1以后,rails引入了asset pipeline,该文件就不需要修改了,因为rails会依据application.html.erb(资源清单)默认加载所有在asset目录下的css和javascript文件。
以书上该句为例
 
1 <%=stylesheet_link_tag:all%>  
按照asset pipeline,rails会到app/asset/javascript/目录下寻找all.css的文件,找不到则会报错。3.1以后,默认application.html.erb中该句为:
1 <%=stylesheet_link_tag:"application" :media=>"all"%>
按照asset pipeline,rails在默认条件下会依据application.html.erb(资源清单)默认加载所有在asset目录下的css和javascrip文件。因此只需要将css文件放到app/asset/stylesheet/目录下就可以了,application.html.erb无需修改。

  • 关于2中的一些概念的简单介绍
layout:是rails中页面在浏览器上总的框架显示。可以这么理解:view生成客户所需的页面后,将这些个页面统统都放到layout这个架子上,最后只要将layout这个页面交给浏览器就可以了。因此layout包含了各个页面的一些公共属性,相对来说会节省很多网页设计方面的时间。
asset pipline:是一个提供连结缩小或者压缩 JavaScript 和 CSS 资源的框架。它也添加了用其它语言编写这些资源的功能, 如 CoffeeScript, Sass 和 ERB。在3.1以前,一般所需的image、css、javascript等文件都会放在public/images、stylesheet、javascript相应的目录下,作为静态数据文件。有了asset pipeline后,这些资源文件被放在app/assets目录下。这个目录下的文件会被Sprockets这个中间件处理。它会包含在sprockets gem.并不是说assets不能放到public下了,它们仍可以并会被服务器当作静态文件处理。处于效率的考虑,asset pipline可以对网页进行一些预处理,提高网页的相应速度。
有一点需要注意
默认条件下application.html.erb是这么写的
1 <%= stylesheet_link_tag "application" %>

2 <%= javascript_include_tag "application" %>
---这样做很不好,因为application会把assets目录及其子目录中所有的js或css全部引用进来,导致速度异常的慢。因此建议修改为只引用本controller相关的css或js.单独引用某个controller的assets
1 <%= javascript_include_tag params[:controller] %> 

2 <%= stylesheet_link_tag params[:controller] %>

  • 关于render和redirect_to
以scaffold为例
1 //--回传样板,但是不执行new的方法,因此会保留表单中的数据提供下次提交,例如“编辑”功能的实现

2 render :action => :new

3 //--执行new的方法,例如“新建”

4 redirect_to :action=>:new   
  • 关于git的使用
到达project的目录下
1 git init

2 git add filename                                //添加需要提交的文件

3 git commit -m 'message about the committed file'//提交

4 git status                                      //查看文件状态
更多内容可参考:pro git

嗯 差不多就这些了
PS:家里天气好冷!

Steven Meng 
2013.1.1

你可能感兴趣的:(Rails)