簡単!Rails3.2を使って10分でブログアプリを構築する方法
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
カテゴリ:
Rails