Rails 基础指南

来源:百度文库 编辑:神马文学网 时间:2024/04/29 22:45:32
Rails在一些基本功能上的实现:
1.Controllers 在Rails中的协调角色
注意,一个C,协调一个M和一个V
1)C与M
class BookController < ApplicationController
scaffold :model_name
#建立与model的关系,scaffold接一个Symbol Object
#Symbol 可以是model类的名字(要区分大小写)
#Symbol 也可以是保存model类的文件的名字(不区分大小写)
end
2)C与V
class BookController < ApplicationController
scaffold :book
def list
#这可以做必要的操作,帮助View的呈现数据,这时你可以在view有关目录下面放入你的rhtml(其他也可以)
end
end
例如:
class BookController < ApplicationController
scaffold :book
def list
@books = Book.find_all      #为list类操作数据,提供一个books的instance variable,list类对应的是view\book下面的list.rhtml
end
end
2.Model 在Rails中的角色
1)建立的 model 必须是表名字的单数,并且这个类和数据库自动关联
2)为数据库的表建立关系
A. belong_to 例如:
class Book < ActiveRecord::Base
belongs_to :category       #一本书对应一个类别,用belongs_to,此类一个对象只对应一个外部类的一个对象用belongs_to
end
B. has_many 例如:
class Category < ActiveRecord::Base
has_many :books            #一类书对应很多本,用has_many,此类一个对象对应很多个外部类的对象用has_many,后面接复数
end
我们知道,books表和categories表的关系是,1对N的关系,所以必须在多方,也就是book方,假如一个外键来为两个表建立关联,我们加入category_id就可以了,这样我们就可以通过book的instance variable直接访问categories表的内容,比如:@book.category.name 来读取categroies表里面的name属性
3.view 在Rails中的角色
使用的是<%%>和<%=expression%>(expression可以加,号,这个是区别于java的)
1)读取数据库里面的数据:
<% @books.each do |book| %>
<%= link_to book.title, :action => "show", :id => book.id %>
<%= book.buydate %>
<% end %>
注意,这里的books,是在controller里面就定义的一个variable,它是一个collection,通过each来获取数据库中每一行数据,:action 表示点击连接以后的转向页面,:id表示传递参数 id
2)传递参数,数据库检索,通过controller整合
class BookController < ApplicationController
scaffold :book
def list
@books = Book.find_all
end
def edit
@book = Book.find(@params["id"])           #整合view层,同时整合model层
@categories = Category.find_all
end
end
所有定义的方法,都是针对view的,都是给view使用的。@params["name"]是其他页面传递过来给你def的页面的