Back

[教程] web + rails 入门 1 大师原创

发布时间: 2015-04-04 00:28:00

先知道 http 的原理.

web app:  是 url 驱动的。  (用户的看到的UI,是根据url 的不同来进行跳转的,)
mobile app: 是 event 驱动的(根据用户点击不同的按钮,来进行不同的跳转)
所以, web app 就只有两个角色参与: browser, server
一个典型的应用:  小王打开新浪网页。过程是:
1. 小王在浏览器中输入地址:   www.sina.com  ( '/index')
2. 小王回车后,  browser 发送 request 给  server,  请求打开 '/index'
3. server 收到 request 之后,生成  index 这个页面的内容。
4. server 把 index的内容 返回给 browser ( response)
5. browser 把  response的内容(index的内容) 展示给小王。
上面的过程, 跟server 端是静态,还是动态的无关。 
 rails的目的: 就是为不同的请求,返回不同的结果。
/user_home?id=3    # =》 小王你好。
/user_home?id=4    # =》 小李你好。
/user_home?id=5
过程,如果有rails参与的话, rails 作为server ,参与了上面5个步骤中的3 步: 
2, 3 , 4 
处理第二步: 
A. server 收到了 browser 发来的GET request, /users/home?id=3 
B. rails 会对url 进行分析, 把它(request)分配给 users controller的 home action进行处理。 
 # config/routes.rb 负责分析url, 并且分配给对应的controller. 
Rails.application.routes.draw do
    resources  :users  do      # 会负责生成默认的7个路由: index,  show, edit, create, update, destroy, new
       collection do
           get :home
       end
    end
end
C. 对应的 action开始运行, 获取数据, 准备留给view来渲染。
class UsersController < ApplicationController
    # 由这个方法进行处理。
    def home
        @user = User.find params[:id]
    end
end


# @user : 是  User的一个 instance
# user = User.new
# user.rb 看起来应该如下:
class User < ActiveRecord::Base
end
D. action运行完之后, rails开始渲染对应的view:
app/views/users/home.html.erb

您好, <%=  @user.name %>
E. rails 就会把上面的view, 渲染出结果:
您好, 小李
F. rails把这个内容,发给browser. browser 发送请求, 有4种。 
具体的处理方式, 看:http://guides.ruby- china.org/routing.html (最好看英文http://guides.rubyonrails.org /routing.html)
 rails 进行数据库的操作: user.find_by_id,
user = User.find_by_name('小王')
user.age = 33
user.save
具体 ,参考:

Back