Skip to main content

در قسمت قبل، یاد گرفتیم که چگونه یک سیستم مدیریت محتوای کوچولو رو با پایگاه داده هاش، ایجاد کنیم. در این قسمت، نمایش محتوای پیج در لینک اختصاصی و همچنین نمایش لینک ها در صفحه اصلی رو بررسی میکنیم.

آموزش این قسمت، کوتاه تر از دفعات پیش هستش، دلیلشم اینه که در بخش آخر، باید متد POST رو بررسی کنیم (اگرچه در مقاله ای قبلا این کار رو کردیم، اما میخوایم دوباره آموزش تکرار بشه و یه استفاده عملی از این موضوع داشته باشیم).

بسیار خوب، فایل index.erb که صفحات ما رو نشون میداد باز کنید، به این شکل تغییرش بدید :

<h1> Pages </h1>
<% if @pages.any? %>
<p>
<%  @pages.each do |page| %>
<a href="/pages/<%= page.id %>">
<h1><%= page.title %> </h1>
</a>
<p> <%= page.text %> </p>
<% end %>
</p>
<% else %>
<h1> No pages added! </h1>
<% end %>

دقت کردید؟ ما از id صفحات برای تولید لینک به اون ها استفاده میکنیم!

حالا بیاید کمی فکر کنیم، وقتی روی این لینک ها کلیک کنیم چه اتفاقی میفته؟ طبیعتا یه ارور ۴۰۴ به ما نشون داده میشه و به ما گفته میشه که صفحه یافت نشده. معمولا سیناترا به صورت پیشفرض یک راهنمایی کوچک هم میکنه که چه چیزی باید به فایل main.rb و … اضافه کنیم تا بتونیم نتیجه درستی بگیریم.

حالا برای این که لینک ها ما رو به جای درستی راهنمایی کنند، کافیه که فایل main.rb رو باز کنیم و این خطوط رو بهش اضافه کنیم :

get '/pages/:id' do
	@page = Page.find(params[:id])
	@title = @page.title
	erb :show
end

خب توی این کد، میگیم که پیج ها رو بر اساس id شون پیدا کنه، و تیتر صفحه رو هم تیتر پیج ایجاد شده بذاره. و در نهایت هم میگیم که ظاهر برنامه در show.erb هست. حالا، نیاز داریم که یک show.erb هم بنویسیم :

<h1><%= @page.title %> </h1>
<p>
<%= @page.text %>
</p>
<a href="/pages"> Back to main page </a>

اینجا، عنوان و متن صفحه رو نشون دادیم، به صفحه اصلی هم که لیست مطالبمون داخلش قرار داره هم لینک کردیم. در آموزش بعدی، سعی میکنیم یه ادیتور بسازیم و بتونیم یک صفحه جدید رو از طریق مرورگر، به CMSمون اضافه کنیم!