ROR笔记(一)

1: MVC架构:

(1): 模型(model):模型携带者数据,还负责执行施加于这些数据上的业务规则,比如,“对于20元以下的订单不予打折”这一约束就要由模型来确保。也即,模型是数据的容器,也是数据的监护者。

(2):视图(view): 负责生成用户界面,根据模型中的数据生成。

(3):控制器(controller):负责 协调 整个应用程序。

2: Ruby中ORM映射:表映射到类,记录映射到对象,字段映射到对象的属性,类方法用于执行表级别的操作,实例方法用于执行单条记录的操作。

3: Rails类对数据库表进行了包装,对于执行单条记录的操作,类的实例方法返回对应的对象,如:

  order =Order.find(1)
   puts "Order  amount   is  #{order.amount}"
   #有时类级别的方法返回一组对象 的集合 (遍历)
   Order.find(:all,:conditions=>"name='zhangsan'").each do |order|
   puts order.amount
   end

4: controller与view对应关系 (两个一一对应)即:浏览器:http://localhost:3000/say/hello/123

默认路由配置:端口后第一部分(say)是控制器名称,第二部分(hello)是action名称也就是控制器类中的方法名称,第三个是传递的参数(默认id)

对应关系:

控制器名称= app/views下的子目录(文件夹)名称

action名称= app/views下的子目录下的文件名称

5:< %= %> 符号之间的内容会被 看作Ruby代码执行,执行结果被转换成字符串,并替代符号中内容的位置。

< % %> 符号之间的内容会被 看作Ruby代码执行,但执行的结果不替换输出

%> 改为 -%> 这里是减号, 会告诉Rails将跟随其后的换行符全部去掉

< %= %> 有时生成的字符串会包含< 或& 符号,影响html页面,用辅助方法 h()可以对字符进行转码。 ActiveRecord从表中取出值,变成类的对象时,会自动将数据库中的类型转换成ruby支持类型。如果你希望得到一个属性的原始值,可以在属性名称后面加_before_type_cast。 account.balance_before_type_cast 布尔型的数据在转换的时候会有些麻烦,有些数据库是不支持布尔型的,所以我们在工作中,可以使用0,1这样的数字来代表布尔值的真假,而ruby中只有false和nil为假,0其实是为真的。所以在数据库映射到类时,我们要判断某个属性的真假时,记得要加一个?号,这个是rails为解决布尔型问题而设置的。 if user.superuser? doSomeThing end 主键。一般来说,rails都会用id作为每张表的主键,但表并不是由我们自己来建的,可能表会用别的字段作为主键。我们可以用set_primary_key来显示地指定主键字段。 class BadBook < ActiveRecord::Base set_primary_key "isbn" end 但需要注意的是,既然指定主键为其它字段,但在访问时,仍然可以通过名为id的属性来设置主键值,也就是说,只要使用ActiveRecord,主键字段在对象中的属性名称就永远都是id。 3:控制器的路径默认是存放在app/controllers根目录下的,但如果我们需要在根目录下再组织一下控制器的路径,那么可以将控制器的声明位于ruby模块之下。例如,我们要将book_controller.rb文件放置于admin目录下,也就是app/controllers/admin/book_controller.rb,那么,我们就应该这样声明: class Admin::BookController < ApplicationController .. end rails的生成器很智能,你可以直接使用 ruby script/generate controller Admin::Book action1 action2

6 days ago, this page was being read.

,

Subscribe to Comments