Ruby on Rails - Giàn giáo

Trong khi bạn đang phát triển các ứng dụng Rails, đặc biệt là những ứng dụng chủ yếu cung cấp cho bạn một giao diện đơn giản cho dữ liệu trong cơ sở dữ liệu, thì việc sử dụng phương pháp giàn giáo thường có thể hữu ích.

Giàn giáo cung cấp nhiều hơn những trò chơi cảm giác mạnh demo giá rẻ. Dưới đây là một số lợi ích -

  • Bạn có thể nhanh chóng nhận mã trước mặt người dùng của mình để phản hồi.

  • Bạn được thúc đẩy bởi thành công nhanh hơn.

  • Bạn có thể tìm hiểu cách Rails hoạt động bằng cách xem mã được tạo.

  • Bạn có thể sử dụng giàn giáo làm nền tảng để bắt đầu sự phát triển của mình.

Ví dụ về giàn giáo

Để hiểu về giàn giáo, hãy tạo một cơ sở dữ liệu có têncookbook và một bảng được gọi là recipes.

Tạo một ứng dụng web Rails rỗng

Mở cửa sổ lệnh và điều hướng đến nơi bạn muốn tạo cookbookứng dụng web. Vì vậy, hãy chạy lệnh sau để tạo một cấu trúc thư mục hoàn chỉnh.

tp> rails new cookbook

Thiết lập cơ sở dữ liệu

Đây là cách để tạo một cơ sở dữ liệu -

mysql> create database cookbook;
Query OK, 1 row affected (0.01 sec)

mysql> grant all privileges on cookbook.*
to 'root'@'localhost' identified by 'password';
Query OK, 0 rows affected (0.00 sec)

mysql> FLUSH PRIVILEGES;
Query OK, 0 rows affected (0.00 sec)

Để hướng dẫn Rails cách tìm cơ sở dữ liệu, hãy chỉnh sửa tệp cấu hình cookbook \ config \ database.yml và thay đổi tên cơ sở dữ liệu thành sách nấu ăn. Để trống mật khẩu. Khi bạn hoàn thành, nó sẽ trông như sau:

development:
   adapter: mysql
   database: cookbook
   username: root
   password: [password]
   host: localhost
	
test:
   adapter: mysql
   database: cookbook
   username: root
   password: [password]
   host: localhost
	
production:
   adapter: mysql
   database: cookbook
   username: root
   password: [password]
   host: localhost

Rails cho phép bạn chạy ở chế độ phát triển, chế độ thử nghiệm hoặc chế độ sản xuất, sử dụng các cơ sở dữ liệu khác nhau. Ứng dụng này sử dụng cùng một cơ sở dữ liệu cho mỗi.

Mã giàn giáo đã tạo

Với hành động giàn giáo, Rails tự động tạo ra tất cả mã mà nó cần. Bằng cách chạy giàn giáo như một kịch bản, chúng tôi có thể nhận được tất cả các mã ghi vào đĩa, nơi chúng tôi có thể điều tra và sau đó bắt đầu điều chỉnh nó cho nhu cầu của chúng tôi.

Vì vậy, bây giờ, hãy bắt đầu lại một lần nữa để tạo mã Scaffold theo cách thủ công bằng cách sử dụng tập lệnh trình trợ giúp giàn giáo -

cookbook> rails generate scaffold recipe

Nó tạo các tệp tự động như được hiển thị bên dưới -

Bộ điều khiển

Hãy xem mã đằng sau bộ điều khiển. Mã này được tạo bởiscaffoldmáy phát điện. Nếu bạn mở app / controllers / cook_controller.rb, thì bạn sẽ thấy một vài thứ như sau:

class RecipesController < ApplicationController
   before_action :set_recipe, only: [:show, :edit, :update, :destroy]
   
   # GET /recipes
   # GET /recipes.json
   def index
      @recipes = Recipe.all
   end
   
   # GET /recipes/1
   # GET /recipes/1.json
   def show
   end
   
   # GET /recipes/new
   def new
      @recipe = Recipe.new
   end
   
   # GET /recipes/1/edit
   def edit
   end
   
   # POST /recipes
   # POST /recipes.json
   def create
      @recipe = Recipe.new(recipe_params)
      
      respond_to do |format|
         if @recipe.save
            format.html { redirect_to @recipe, notice: 'Recipe was successfully created.' }
            format.json { render :show, status: :created, location: @recipe }
         else
            format.html { render :new }
            format.json { render json: @recipe.errors, status: :unprocessable_entity }
         end
      end
      
   end
   
   # PATCH/PUT /recipes/1
   # PATCH/PUT /recipes/1.json
   def update
      respond_to do |format|
         if @recipe.update(recipe_params)
            format.html { redirect_to @recipe, notice: 'Recipe was successfully updated.' }
            format.json { render :show, status: :ok, location: @recipe }
         else
            format.html { render :edit }
            format.json { render json: @recipe.errors, status: :unprocessable_entity }
         end
      end
      
   end
   
   # DELETE /recipes/1
   # DELETE /recipes/1.json
   def destroy
      @recipe.destroy
         respond_to do |format|
         format.html { redirect_to recipes_url, notice: 'Recipe was successfully destroyed.' }
         format.json { head :no_content }
      end
   end
   
   private
   
   # Use callbacks to share common setup or constraints between actions.
   def set_recipe
      @recipe = Recipe.find(params[:id])
   end
   
   # Never trust parameters from the scary internet, only allow the white list through.
   def recipe_params
      params.require(:recipe).permit(:tittle, :instructions)
   end
end

Khi người dùng ứng dụng Rails chọn một hành động, ví dụ "Show" - bộ điều khiển sẽ thực thi bất kỳ mã nào trong phần thích hợp - "def show" - và sau đó theo mặc định sẽ hiển thị một mẫu cùng tên - "show.html. ờ ”. Hành vi mặc định này có thể bị ghi đè.

Bộ điều khiển sử dụng các phương thức ActiveRecord như find, find_all, new, save, update_attributes, và hủy để di chuyển dữ liệu đến và từ các bảng cơ sở dữ liệu. Lưu ý rằng bạn không phải viết bất kỳ câu lệnh SQL nào, rails sẽ tự động xử lý nó.

Dòng mã này sẽ làm cho bảng cơ sở dữ liệu trở nên sống động. Nó sẽ cung cấp một giao diện đơn giản cho dữ liệu của bạn và các cách -

  • Tạo mục nhập mới
  • Chỉnh sửa các mục hiện tại
  • Xem các mục nhập hiện tại
  • Hủy mục nhập hiện tại

Khi tạo hoặc chỉnh sửa một mục nhập, giàn giáo sẽ thực hiện tất cả công việc khó khăn như tạo và xử lý biểu mẫu cho bạn và thậm chí sẽ cung cấp tạo biểu mẫu thông minh, hỗ trợ các loại đầu vào sau -

  • Chuỗi văn bản đơn giản
  • Vùng văn bản (hoặc khối văn bản lớn)
  • Bộ chọn ngày
  • Bộ chọn ngày giờ

Bạn có thể sử dụng Rails Migrations để tạo và duy trì bảng.

rake db:migrate RAILS_ENV=development

Bây giờ, hãy chuyển đến thư mục sách dạy nấu ăn và chạy Máy chủ Web bằng lệnh sau:

cookbook> rails server

Bây giờ, hãy mở trình duyệt và điều hướng đến http://127.0.0.1:3000/recipe/new.Thao tác này sẽ cung cấp cho bạn một màn hình để tạo các mục mới trong bảng công thức nấu ăn. Ảnh chụp màn hình được hiển thị bên dưới -

Khi bạn nhấn Create để tạo một công thức mới, bản ghi của bạn sẽ được thêm vào bảng công thức và nó hiển thị kết quả sau:

Bạn có thể thấy tùy chọn để chỉnh sửa, hiển thị và hủy các bản ghi. Vì vậy, hãy thử với các tùy chọn này.

Bạn cũng có thể liệt kê tất cả các công thức có sẵn trong bảng công thức bằng cách sử dụng URL http://127.0.0.1:3000/recipe/list.

Nâng cao mô hình

Rails cung cấp cho bạn rất nhiều lỗi xử lý miễn phí. Để hiểu điều này, hãy thêm một số quy tắc xác thực vào mô hình công thức trống -

Sửa đổi ứng dụng / mô hình / công thức.rb như sau và sau đó kiểm tra ứng dụng của bạn -

class Recipe < ActiveRecord::Base
   validates_length_of :title, :within => 1..20
   validates_uniqueness_of :title, :message => "already exists"
end

Các mục này sẽ tự động kiểm tra.

  • validates_length_of - trường không trống và không quá dài.

  • validates_uniqueness_of- các giá trị trùng lặp bị mắc kẹt. Thay vì thông báo lỗi Rails mặc định, chúng tôi đã đưa ra một thông báo tùy chỉnh ở đây.

Cách thay thế để tạo giàn giáo

Tạo một ứng dụng như hình trên và The Generated Scaffold Code như hình bên dưới

rails g scaffold Recipe tittle:string instructions:text

Đoạn mã trên tạo các tệp tự động với cơ sở dữ liệu bằng cách sử dụng với sqlite3 với cột tiêu đề và hướng dẫn như được hiển thị bên dưới hình ảnh.

chúng ta cần di chuyển cơ sở dữ liệu bằng cách sử dụng cú pháp dưới đây.

$ rake db:migrate RAILS_ENV=development

Cuối cùng chạy ứng dụng bằng cách sử dụng dòng lệnh sau:

rails server

Nó sẽ tạo ra kết quả như hình ảnh đầu ra ở trên.

Quan điểm

Tất cả các khung nhìn và tương ứng với tất cả các phương thức bộ điều khiển được tạo bởi scaffold và chúng có sẵn trong thư mục ứng dụng / lượt xem / công thức nấu ăn.

Giàn giáo khác nhau như thế nào?

Nếu bạn đã xem qua các chương trước, thì bạn hẳn đã thấy rằng chúng tôi đã tạo ra các phương thức để liệt kê, hiển thị, xóa và tạo dữ liệu, v.v. nhưng giàn giáo thực hiện công việc đó một cách tự động.