分享

Rails 基础指南

 漂在北方的狼 2006-12-06

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的页面的

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多