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.