只是怕忘了命令,全部撸一次,记个大概。。

~~~~~~~~~~~~~~~~~~~~~~~~~~~~

安装Ruby之前,先要安装RVM:

curl -L https://get.rvm.io | bash –s

然后,安装一些依赖之后:

rvm install ruby version --with-openssl-dir=$HOME/.rvm/usr

之后安装Rails:

gem install rails --version 4.0.0 --no-ri --no-rdoc

创建Rails新程序:

rails new first_app

启动Rails测试服务器:

rails server –b 0.0.0.0

Rails产生静态资源文件:

rails generate controller StaticPages home help --no-test-framework

手动创造Rails之后,默认路由不是以资源方式定义的:

SampleApp: :Application. routes. draw do

root to: 'static_pages#home'

resources :users

resources :sessions, only: [:new, :create, :destroy]

match '/signup', to: 'users#new', via: 'get'

match '/help' , to: 'static_pages#help' , via: 'get'

end

新建的控制器内容都是空的:

class StaticPagesController < ApplicationController
def
home
end
def help
end
end

其生成的视图也只是一个提示性的HTML:

<h1>StaticPages#home</h1>
<p>Find me in app/views/static_pages/home.html.erb</p>

Rails提供了特别的布局文件application.html.erb,可以提供网页相同的结构:

<!DOCTYPE html>
<html>
<head>
<title>Ruby on Rails Tutorial Sample App | <%= yield( :title) %></title>
<%=
stylesheet_link_tag
"application"
,
media: "all"
,
"data-turbolinks-track"
=>
true %>
<%= javascript_include_tag "application" , "data-turbolinks-track"
=>
true %>
<%= render 'layouts/shim’>

</head>

<body>
<%=
render
'layouts/header'
%>
<div
class="container">
<%
flash.
each do | key, value| %>
<div
class="alert alert-<%= key %>"><%= value %></div>
<%
end
%>
<%= yield %>
<%= render 'layouts/footer' %>
<%= debug( params) if Rails. env. development? %>
</div></body>
</html>

Rails除了提供内置方法供我们在视图中使用,我们还可以自建帮助方法,在视图中使用。

app/helper/static_pages_helper.rb

app/helper/application_helper.rb

Rails中创建LINK的链接及图片:

<%= link_to "Sign in" , '#' %> 第一个是链接文本,第二个是链接地址

<%= link_to "About" ,
about_path %>

<%= link_to image_tag( "rails.png"
,
alt: "Rails"
),
'http://rubyonrails.org/'
%>

asset pipeline的目录及自定义样式文件:

app/assets/stylesheets

app/assets/stylesheets/custom.css.scss

静态资源目录:

• app/assets
• lib/assets
• vendor/assets

局部视图:

<%= render 'layouts/shim' %>

app/views/layouts/_shim.html.erb

生成用户模型:

rails generate model User name:string email:string

进行数据迁移:

bundle exec rake db:migrate

入库前进行数据有效性验证(电邮不重复,密码加密码,长度不小于3,用户名不超过50)

class User < ActiveRecord::Base

before_save {self.email =
email.downcase }

validates :name, presence:
true, length: {maximum: 50 }

VALID_EMAIL_REGEX =
/\A[\w+\-.]+@[a-z\d\-.]+\.[a-z]+\z/i

validates :email,
presence: true, format: { with: VALID_EMAIL_REGEX }, uniqueness: {
case_sensitive: false }

has_secure_password

validates :password,
length: { minimum: 3 }

end

确保电邮唯一性的方法:

生成索引:

rails generate migration add_index_to_users_email

修改迁移文件:

class AddIndexToUsersEmail < ActiveRecord: :Migration
def
change
add_index
:users, :email, unique: true
end
end

安全密码实现过程:

GEM需求

gem 'bcrypt-ruby' , '3.0.1'

bundle install.

数据库增加新列:

rails generate migration add_password_digest_to_users
password_digest:string

bundle exec rake db:migrate

用户注册表单:

<%= form_for(@user) do |f| %>

<%= render
'shared/error_messages' %>

<%= f.label :姓名  %>

<%= f.text_field
:name  %>

<%= f.label :邮箱  %>

<%= f.text_field
:email  %>

<%= f.label
:password  %>

<%=
f.password_field :password  %>

<%= f.label
:password_confirmation, "Confirmation"  %>

<%=
f.password_field :password_confirmation 
%>

<%= f.submit
"Create my account", class: "btn btn-large
btn-primary"  %>

<% end %>

资源模型的控制器标准操作:

class UsersController < ApplicationController

def show

@user =
User.find(params[:id])

end

def new

@user = User.new

end

def create

@user =
User.new(user_params)

if @user.save

flash[:success] =
"Welcome to the Sample App!"

redirect_to @user

else

render 'new'

end

end

private

def user_params

params.require(:user).permit(:name, :email, :password,
:password_confirmation)

end

end

自定义出错信息,放在app/views/shared/_error_messages.html.erb

<% if @user. errors. any? %>
<div
id="error_explanation">
<div class="alert alert-error">
The form contains <%= pluralize( @user. errors.
count, "error" ) %>.
</div>
<ul>
<%
@user. errors.
full_messages. each do | msg| %>
<li>*
<%=
msg
%></li>
<%
end
%>
</ul>
</div>
<%
end
%>

生成session控制器语法

rails generate controller Sessions --no-test-framework

登陆时的FORM

<%= form_for( :session, url:
sessions_path) do | f| %>
<%= f. label :email %>
<%= f. text_field :email %>
<%= f. label :password %>
<%= f. password_field :password %>
<%= f. submit "Sign in" , class: "btn
btn-large btn-primary" %>
<% end %>

用户包含sessionHelper(正常时只能VIEW用,而CONTROLLER用要明文INCLUE)

class ApplicationController < ActionController::Base

# Prevent CSRF attacks by
raising an exception.

# For APIs, you may want
to use :null_session instead.

protect_from_forgery with:
:exception

include SessionsHelper

end

为表增加新字段,且为此字段增加索引:

rails generate migration add_remember_token_to_users

db/migrate/[timestamp]_add_remember_token_to_users.rb

class
AddRememberTokenToUsers
<
ActiveRecord: :Migration
def
change
add_column
:users, :remember_token, :string(要自己加哟)
add_index
:users, :remember_token(要自己加哟)
end
end

生成token的回调函数:

class User < ActiveRecord: :Base
before_save
{ self. email = email. downcase }
before_create :create_remember_token
.
def User. new_remember_token
SecureRandom.
urlsafe_base64
end
def User. encrypt( token)
282
Digest: :SHA1.
hexdigest( token. to_s)
end
private
def create_remember_token
self.
remember_token = User. encrypt( User.
new_remember_token)
end
end

<header class="navbar navbar-fixed-top
navbar-inverse">

<div
class="navbar-inner">

<div
class="container">

<%= link_to
"Autop", '#', id: "logo" %>

<nav>

<ul
class="nav pull-right">

<li><%=
link_to "Home", root_path %></li>

<li><%=
link_to "Help", help_path %></li>

<% if
signed_in? %>

<li><%= link_to "Users", '#' %></li>

//<li
id="fat-menu" class="dropdown">

//<a
href="#" class="dropdown-toggle"
data-toggle="dropdown">

Accout
<b class="caret"></b>

</a>

//<ul
class="dropdown-menu">

<li><%= link_to
"Profile", current_user 
%></li>

<li><%= link_to "Settings", '#'  %></li>

<li
class="divider"> </li>

<li>

<%= link_to "Sign out", signout_path, method: "delete"  %>

</li>

//</ul>

//</li>

<% else %>

<li><%=
link_to "Sign in", signin_path %></li>

<%  end 
%>

</ul>

</nav>

</div>

</div>

</header>

Ruby on Rails Tutorial读书笔记-1的更多相关文章

  1. Ruby on Rails Tutorial 第2版 学习笔记

    Ruby on Rails Tutorial 第2版 在线阅读:http://railstutorial-china.org/ 英文版:http://ruby.railstutorial.org/ru ...

  2. Ruby on Rails Tutorial 第一章 之 简介

    1.目标:掌握MVC和REST.生成器.迁移.路由.嵌入式Ruby 本书涉及Rails,Ruby语言,Rails默认使用的测试框架(MiniTest),Unix命令行,HTML,CSS,少量的Java ...

  3. Ruby on Rails Tutorial 第一章笔记

    搭建开发环境 作者介绍了 Cloud9\ Coding.net 这样的云端开发环境 安装 Rails 1. 新建 rails 应用 首先,调用 rails new 命令创建一个新的 Rails 应用, ...

  4. Ruby on Rails Tutorial 第四章 Rails背后的Ruby 之 字符串

    1.辅助方法 2.字符串 输入“irb”进入Ruby命令行开发环境,控制器的启动方法是在命令行中执行“rails console”. (1)字符串连接 >>"foo"+ ...

  5. Ruby on Rails Tutorial 第三章 静态页面

    1.生成静态页面 $ rails generate controller StaticPages home help    #生成主页和帮助页面的路由.控制器及静态页面 $ rails destroy ...

  6. Ruby on Rails Tutorial 第二章 之 用户资源&MVC&REST

    说明:用户资源包括用户数据模型和这个模型相关的Web页面. 1.用户数据模型如下: 2.使用Rails内置的脚手架生成用户资源中,执行如下所示命令: $ rails generate scaffold ...

  7. Ruby on Rails Tutorial 第一章 之 搭建开发环境

    云端开发环境,Cloud9(https://ide.c9.io/).这个开发环境预先安装好了Rails开发所需要的大多数软件,包括Ruby.RubyGems和Git,需要自己安装Rails. 1.安装 ...

  8. Ruby on Rails Tutorial 第六章 用户模型

    1.用户模型(1)数据库迁移Rails默认使用关系数据库存储数据,数据库中的表有数据行组成,每一行都有相应的列,对应数据属性.把列名命名为相应的名字后,ActiveRecord会自动把他们识别为用户对 ...

  9. Ruby on Rails Tutorial 第五章 完善布局

    本章目标:局部视图.Rails路由.Asset Pipeline.Sass1.Bootstrap是Twitter开发的开源Web设计框架mockup是网页构思图,在web领域经常称之为“线框图”,用于 ...

随机推荐

  1. KVM几种缓存模式

    原文在这里: http://pic.dhe.ibm.com/infocenter/lnxinfo/v3r0m0/index.jsp?topic=%2Fliaat%2Fliaatbpkvmguestca ...

  2. python成长笔记

    正则表达式 1.    择一匹配:管道符号(|),表示“从多个模式中选择其一”.例:at|home à at.home 2.    点号匹配除了换行符以外的任何字符 3.    边界匹配:\b匹配一个 ...

  3. 跟Google学习Android开发-起始篇-用碎片构建一个动态的用户界面(3)

    4.3 构建一个灵活的用户界面 当设计你的应用程序要支持大范围的屏幕尺寸时,你可以在不同的布局配置中重用碎片,来根据可用的屏幕空间优化用户体验. 例如,在手持设备上,它可能是适应来在一个单窗格用户界面 ...

  4. 防止程序启动两次的方法CreateMutex()

    在工程文件中, WinMain函数里加上以下代码 HANDLE hMutex = CreateMutex(NULL, false, "Process"); if (GetLastE ...

  5. 032数值的整数次方(keep it up)

    剑指offer中题目:http://ac.jobdu.com/problem.php? pid=1514 题目描写叙述: 给定一个double类型的浮点数base和int类型的整数exponent. ...

  6. Appcelerator Titanium 3.x Win7 64位平台安装步骤

    刚接触Android移动开发,第一次下载Titanium,第一次下载ADT,第一次看Javascript代码,N多第一次...... 慢慢摸索了一个礼拜把移动开发的工具链的配置学习了一下,抛砖引玉,但 ...

  7. 奇妙的go语言(网页下载)

    [ 声明:版权全部,欢迎转载,请勿用于商业用途.  联系信箱:feixiaoxing @163.com] 眼下,网上关于网页爬行的代码非常多.可是,自从看了go语言的web下载代码之后,我才发现原来它 ...

  8. linux telnet服务安装与配置

    关闭防火墙:service iptabls stop            chkconfig iptabls off 1.安装telnet服务 [root@rheltest1 ~]# rpm -qa ...

  9. ViewPage 大圣归来 原生示例

    VP简介 android-support-v4.jar 是谷歌官方给我们提供的一个兼容低版本安卓设备的软件包,里面包囊了只有在安卓3.0以上可以使用的api.而ViewPage就是其中之一,利用它,我 ...

  10. css01入门小例子

    <!DOCTYPE html> <html> <head lang="en"> <meta charset="UTF-8&quo ...