Railsで掲示板っぽいものを作ってみる
CentOSにRuby2.1とRails4.1をインストールしてみる
の続き
アプリケーションの作成
Railsアプリケーションを作成する。
$ rails new sample
$ cd sample
いつものごとく、therubyracerのコメントを外す。
$ vi Gemfile gem 'therubyracer' ←コメントを外す
$ bundle install
データベースの作成
データベースを作成する。
$ rake db:create
モデルの作成
モデルを作成し、データベースに反映する。
$ rails generate model message title:string body:text $ rake db:migrate
タイトルと本文の入力を必須とし、最大文字数を設定する。
また、逆順にソートして取得するメソッドも定義しておく。
$ vi app/models/message.rb
class Message < ActiveRecord::Base validates :title, :presence => true, :length => { :maximum => 10 } validates :body, :presence => true, :length => { :maximum => 100 } def self.message_list return Message.all.order(:created_at => :desc) end end
コントローラの作成
コントローラを作成する。
$ rails generate controller messages
表示用のメソッドと書き込み用のメソッドを作成する。
$ vi app/controllers/messages_controller.rb
class MessagesController < ApplicationController # 表示 def index @messages = Message.message_list @message = Message.new end # 書き込み def create @message = Message.new(params.require(:message).permit(:title, :body)) if @message.save redirect_to :action => :index else @messages = Message.message_list render :index end end end
ルートも設定しておく。
$ vi config/routes.rb
Sample::Application.routes.draw do ・・・ # root 'welcome#index' root 'messages#index' resources(:messages) ・・・ end
ビューの作成
ビューを作成する。
$ vi app/views/messages/index.html.erb
<h1>掲示板</h1> <%= form_for(@message) do |f| %> <% if @message.errors.any? %> <% @message.errors.full_messages.each do |err| %> <font color="red"><%= err %></font><br> <% end %> <% end %> <div><%= f.text_field :title %></div> <div><%= f.text_area :body %></div> <%= f.submit %><br> <% end %> <hr> <% @messages.each do |msg| %> <%= msg.id %> : <%= msg.title %> : <%= msg.created_at %><br> <pre><%= msg.body %></pre> <br> <% end %>