RailsGuide学习要点整理

关于Rails

Rails 是使用 Ruby 语言编写的 Web 应用开发框架,目的是通过解决快速开发中的共通问题,简化 Web 应用的开发。与其他编程语言和框架相比,使用 Rails 只需编写更少代码就能实现更多功能。

Rails 哲学两大指导思想:

·不要自我重复(DRY): DRY 是软件开发中的一个原则,意思是系统中的每个功能都要具有单一、准确、可信的实现。。不重复表述同一件事,写出的代码才更易维护、更具扩展性,也更不容易出问题。

·多约定,少配置 Rails Web 应用的大多数需求都提供了最好的解决方法,并且默认使用这些约定,而不是在长长的配置文件中设置每个细节。


基本Blog创建


1.新建Rails应用


    需安装ruby railsSQLite3mac自带,或者其他数据库)

    配置好开发环境后,在Terminal中进入要创建应用的文件夹,使用如下命令创建名为Blog的应用


$ rails new blog

   进入创建的文件夹,并用下面命令安装Gemfile 中列出的 gem 及其依赖


$ bundle install

2.启用服务



$ bin/rails server

    上述命令启动Rails 默认使用的 Web 服务器Puma。打开浏览器窗口,访问 http://localhost:3000查看运行中的应用。TerminalCtrl+C停止服务。


3. 控制器(controller)

    控制器接受向应用发起的特定访问请求。路由决定哪些访问请求被哪些控制器接收。一般情况下,一个控制器会对应多个路由,不同路由对应不同动作。动作搜集数据并把数据提供给视图。

    用下面的命令告创建一个包含“index”动作的“Welcome”控制器

$ bin/rails generate controller Welcome index

   其中最重要的文件是控制器和视图,控制器位于 app/controllers/welcome_controller.rb 文件 ,视图位于 app/views/welcome/index.html.erb 文件

在编辑器中打开 config/routes.rb 文件。是应用的路由文件,使用特殊的 DSL编写。


设置应用主页:


root 'welcome#index' 

控制器中一般按此顺序【indexshowneweditcreateupdate  destroy


4.视图(view


    视图以人类能看懂的格式显示数据。数据是在控制器而不是视图中获取的,视图只是显示数据。视图模板默认使用 eRuby编写,经 Rails 解析后,再发送给用户。


5.模型(model

     Rails 中,模型使用单数名称,对应的数据库表使用复数名称。Rails 提供了用于创建模型的生成器,大多数 Rails 开发者在新建模型时倾向于使用这个生成器。执行下面的命令创建模型


$ bin/rails generate model Article title:string text:text


6.资源(resource

    资源(resource)表示一系列类似对象的集合。资源中的项目可以被创建、读取、更新和删除,这些操作简称 CRUDCreate, Read, Update, Delete)。

    Rails 提供了 resources 方法,用于声明标准的 REST 资源。把 articles 资源添加到 config/routes.rb 文件,此时文件内容应该变成下面这样:


Rails.application.routes.draw do
  get 'welcome/index'
 
  resources :articles
 
  root 'welcome#index'
end

rails routes查看REST 动作都具有对应的路由:


$ bin/rails routes
      Prefix Verb   URI Pattern                  Controller#Action
    articles GET    /articles(.:format)          articles#index
             POST   /articles(.:format)          articles#create
 new_article GET    /articles/new(.:format)      articles#new
edit_article GET    /articles/:id/edit(.:format) articles#edit
     article GET    /articles/:id(.:format)      articles#show
             PATCH  /articles/:id(.:format)      articles#update
             PUT    /articles/:id(.:format)      articles#update
             DELETE /articles/:id(.:format)      articles#destroy
        root GET    /  


7.迁移

    rails generate model 命令会在 db/migrate 文件夹中生成数据库迁移文件。迁移是用于简化创建和修改数据库表操作的 Ruby 类。Rails 使用 rake 命令运行迁移,并且在迁移作用于数据库之后还可以撤销迁移操作。迁移的文件名包含了时间戳,以确保迁移按照创建时间顺序运行。


class CreateArticles < ActiveRecord::Migration[5.0]
  def change
    create_table :articles do |t|
      t.string :title
      t.text :text
 
      t.timestamps
    end
  end
end

   上面的迁移创建了 change 方法,在运行迁移时会调用这个方法。在 change 方法中定义的操作都是可逆的,在需要时 Rails 知道如何撤销这些操作。运行迁移后会创建 articles 表,这个表包括一个字符串字段和一个文本字段,以及两个用于跟踪文章创建和更新时间的时间戳字段。

用命令rails db:migrate进行迁移



8.健壮参数

使用 require  permit 方法


@article = Article.new(params.require(:article).permit(:title, :text))

一般设置为私有,如下:

def create
  @article = Article.new(article_params)
 
  @article.save
  redirect_to @article
end
 
private
  def article_params
    params.require(:article).permit(:title, :text)
  end

9.添加链接

link_to 方法是 Rails 内置的视图辅助方法之一,用于创建基于链接文本和地址的超链接


<%= link_to 'My Blog', controller: 'articles' %>

链接到当前控制器的动作时不需要指定 :controller 选项, Rails 默认使用当前控制器

10.添加验证


验证传入模型的数据


class Article < ApplicationRecord
  validates :title, presence: true,
                    length: { minimum: 5 }
end

Rails 会自动用 div 包围含有错误信息的字段,并为这些 div 添加 field_with_errors类。可以定义 CSS 规则突出显示错误信息。


<% if @article.errors.any? %>
    <div id="error_explanation">
      <h2>
        <%= pluralize(@article.errors.count, "error") %> prohibited
        this article from being saved:
      </h2>
      <ul>
        <% @article.errors.full_messages.each do |msg| %>
          <li><%= msg %></li>
        <% end %>
      </ul>
    </div>
  <% end %>


11.添加关联

eg:关联文章和评论:


一篇文章可以有多条评论


class Article < ApplicationRecord
  has_many :comments, dependent: :destroy
  validates :title, presence: true,
                    length: { minimum: 5 }
end

每一条评论都属于某一篇文章


  class Comment < ApplicationRecord

  belongs_to :article
end

 articles 资源中创建 comments 资源,这种方式被称为嵌套资源


resources :articles do
  resources :comments
end

12.安全验证


除了 index  show 动作,其他动作都要通过身份验证才能访问


class ArticlesController < ApplicationController
 
  http_basic_authenticate_with name: "dhh", password: "secret", except: [:index, :show]

只有通过身份验证的用户才能删除评论


class CommentsController < ApplicationController
 
  http_basic_authenticate_with name: "dhh", password: "secret", only: :destroy


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值