簡単!Rails3.2を使って10分でブログアプリを構築する方法

本家チュートリアルを簡略化して、10分でブログアプリを作る手順をまとめてみました。

動作イメージは、下記の動画をご覧ください。だいたい同じような内容です。

プロジェクト作成からHello Worldまで

(Ruby/Railsのインストールは完了してるものとします。)
$ rails new blog
$ cd blog
$ vi GemFile
GemFileを編集して下記を追記
gem 'execjs'
gem 'therubyracer'
サーバ起動
$ rails server
http://localhost:3000 にアクセスして、Welcome aboard画面が出ればOK

"Hello Rails"を表示するためのコントローラを作成
$ rails generate controller home index
$ rm public/index.html
config/routes.rb を編集
  # You can have the root of your site routed with "root"
  # just remember to delete public/index.html.
  # ↓下記を追記
  root :to => 'home#index'
app/views/home/index.html.erb を編集
<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
<h1>Hello, Rails!</h1>
ブラウザを再読み込みして、"Hello, Rails"が表示されればOK

scaffoldによる各種リソース自動生成

$ rails generate scaffold Post name:string title:string content:text
$ rake db:migrate
これで、ブログ記事のCRUD(表示、一覧、作成、変更)ができるようになります。
記事一覧画面へのリンクを貼る
app/views/home/index.html.erb を編集
<h1>Home#index</h1>
<p>Find me in app/views/home/index.html.erb</p>
<h1>Hello, Rails!</h1>
<%= link_to "My Blog", posts_path %>
"My Blog"リンクをクリックして、http://locahost:3000/posts に遷移すればOK
バリデーションを追加する
app/models/post.rb を編集
class Post < ActiveRecord::Base
  validates :name,  :presence => true
  validates :title, :presence => true, :length => { :minimum => 5 }
end
nameやtitleが空のままで投稿してエラーが出ればOK

コメント機能を実装する

$ rails generate model Comment commenter:string body:text post:references
$ rake db:migrate
app/models/post.rb を編集
class Post < ActiveRecord::Base
  validates :name,  :presence => true
  validates :title, :presence => true, :length => { :minimum => 5 }
 
  has_many :comments
end
config/routes.rb を編集
resources :posts do
  resources :comments
end
$ rails generate controller Comments
app/views/posts/show.html.erb を編集して下記を追記
<h2>コメント</h2>
<% @post.comments.each do |comment| %>
  <p>
    <%= comment.commenter %>: <%= comment.body %>
    <%= link_to '削除', [comment.post, comment],
               :confirm => 'よろしいですか?',
               :method => :delete %>

  </p>
<% end %>

<h2>コメントを書く</h2>
<%= form_for([@post, @post.comments.build]) do |f| %>
  <div class="field">
    <%= f.label :commenter %><br />
    <%= f.text_field :commenter %>
  </div>
  <div class="field">
    <%= f.label :body %><br />
    <%= f.text_area :body %>
  </div>
  <div class="actions">
    <%= f.submit %>
  </div>
<% end %>
app/controllers/comments_controller.rbを編集
class CommentsController < ApplicationController
  def create
    @post = Post.find(params[:post_id])
    @comment = @post.comments.create(params[:comment])
    redirect_to post_path(@post)
  end

  def destroy
    @post = Post.find(params[:post_id])
    @comment = @post.comments.find(params[:id])
    @comment.destroy
    redirect_to post_path(@post)
  end
end
以上です。
参考
Ubuntu12.04にRuby1.9.3とRails3.2をインストールする方法
Ruby on Rails Guides: Getting Started with Rails
カテゴリ:

人気記事