در قسمت دوم، یاد گرفتیم که چطور پیج هایی که ساختیم رو نمایش بدیم! در این قسمت، میخوایم مستقیما با دیتابیس وارد مذاکره بشیم! در واقع در این قسمت میخوایم به کاربر اجازه بدیم که خودش یک پیج ایجاد کنه. خیلی هم شیک و ساده. ابتدا این قسمت رو به main.rb اضافه کنید :
get '/pages/new' do
@page = Page.new
erb :new
end
در اینجا، گفته شده که یک صفحه به اسم new.erb خونده و نمایش داده بشه. علاوه بر اون، گفتیم که از کلاس Page هم یک شیء جدید برامون بسازه. حالا، فایل new.erb رو به این شکل ایجاد کنید :
<h1> New Page </h1>
<form action="/pages" method="post">
<h2> Title: </h2>
<input type="text" name="page[title]">
<h2> Text: </h2>
<textarea name="page[text]" cols="50" rows="5">
</textarea>
<br/>
<input type="submit">
</form>
در اینجا یک فرم ایجاد کردیم که با متد POST کار میکنه. قبل تر، در مورد متد پست توضیح دادیم، و میتونید این مطلب رو در موردش بخونید تا درکش کنید!
بسیار خوب، الان برای این که برنامه ما درست و حسابی کار کنه، فقط نیاز داریم که با یک متد POST بهش بفهمونیم که اطلاعات رو توی دیتابیس بنویسه. و خب این قسمت رو به main.rb مون اضافه میکنیم :
post '/pages' do
page = Page.create(params[:page])
redirect to("/pages/#{page.id}")
end
خب، در اینجا میگیم که پیجی با پارامتر هایی که داده شده بساز، و بعدش برگرد به همون پیج. به همین سادگی!
جمع بندی
در کل این سه قسمت آموزش، یک CMS بسیار ساده ساختیم که یه ادیتور داشت و میتونست نوشته های ما رو توی یک دیتابیس ذخیره کنه و بعد به ما نشون بده. کل فایل main.rb ما به این شکل در اومد :
require 'sinatra'
require 'mongoid'
configure do
Mongoid.load!("./database.yml")
end
class Page
include Mongoid::Document
field :title, type: String
field :text, type: String
end
get '/pages' do
@pages = Page.all
@title = "Page List"
erb :index
end
get '/pages/new' do
@page = Page.new
erb :new
end
post '/pages' do
page = Page.create(params[:page])
redirect to("/pages/#{page.id}")
end
get '/pages/:id' do
@page = Page.find(params[:id])
@title = @page.title
erb :show
end
و کل ساختار فولدرهای ما به این شکل در اومد :
simple-cms/
├── database.yml
├── main.rb
├── README.md
└── views
├── index.erb
├── new.erb
└── show.erb
با استفاده از چنین الگویی، شما قادرید که برنامه های واقعی تری بنویسید و از اونها در دنیای واقعی استفاده کنید. در قسمت اول ذکر شد که این CMS بدرد وبلاگ و وبسایت و … نمیخوره. دلیلشم مشخصه! توی این برنامه هیچگونه پرمیشن و سشن و … ای رعایت نشده که بدونیم کدوم یوزر میتونه پیج ایجاد کنه کدوم نمیتونه و این قضایا. یعنی امنیت نداره کانتنتی که روی اون وبسایت تولید میشه. شما میتونید با خوندن داکیومنت در مورد session ها این مورد رو هم هندل کنید و CMS کامل تری بسازید!
موفق باشید 🙂