2015年3月5日 星期四

使用 scaffolding

Rails 的 鷹架 (scaffolding) 可用一行指令就為 Resource 建立 Model, Views 跟 Controller 程式碼。
下面要建立部落格文章管理功能。

建立 Post resource
rails generate scaffold Post name:string title:string content:text

執行 Migration 建立了 Posts 資料表
rake db:migrate

接著修改app/views/home/index.html.erb,再加一行
<%= link_to "My Blog", posts_path %>

刷新瀏覽器後點了連結就可以操作了。

順著指南從6.5開始看,在新增post時,若輸入空白也可以加入,所以要為欄位加上驗證

加入Validation (驗證)
打開app/models/post.rb在post類別內補上驗證的程式碼
class Post < ActiveRecord::Base
  validates :name,  :presence => true
  validates :title, :presence => true,
                    :length => { :minimum => 5 }
end

其實有沒有效果執行網頁就知道了,但有另一種方式就是console工具
執行rails console
接著就可以執行ruby的程式,也是一種方法。

往指南6.7往下看之前,先理解這些檔案之間的關連

以按下My Blog連結為例,就會執行到 app/controllers/posts_controller.rb 程式內 index 這個 action,
裡面的程式 @posts = Post.all 使用到了 app/models/post.rb 這個模組,
最後靠 app/views/index.html.erb 顯示出來

那麼為什麼會去執行index這action呢?還記得之前設定過的config/routes.rb檔嗎?
裡面有一行 resources :posts 有了這一行就會自動定義出以下七個action
get    '/posts'  => "posts#index",   :as => "posts"
post   '/posts' => "posts#create",  :as => "posts"
get    '/posts/:id' => "posts#show",    :as => "post"
put    '/posts/:id'      => "posts#update",  :as => "post"
delete '/posts/:id'      => "posts#destroy", :as => "post"
get    '/posts/new'      => "posts#new",     :as => "new_post"
get    '/posts/:id/edit' => "posts#edit",    :as => "edit_post"

所以按下My Blog連結,就是第一行的設定了。

到了這邊,沒碰過Ruby的話,要先補充一下,下面的連結可以好好參考。
https://ihower.tw/rails4/ruby.html

沒有留言:

張貼留言