2014-10-06(月)
Railsで掲示板っぽいものを作ってみる
CentOSにRuby2.1とRails4.1をインストールしてみる
の続き
Railsで掲示板っぽいものを作ってみる。
アプリケーションの作成
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 %>
確認
起動する。
$ rails server
http://サーバーのアドレス:3000/
にアクセスすると、掲示板っぽいものが表示される。
入力してボタンを押すと、
投稿される。
文字数が長すぎたり、未入力があると、
エラーになる。
トラックバック - http://d.hatena.ne.jp/yk5656/20141006/1413243671
リンク元
- 1464 https://www.google.co.jp/
- 219 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=1&ved=0CB0QFjAA&url=http://d.hatena.ne.jp/yk5656/20131208/1386476543&ei=zHI8VMmvG8Kk8AXErIDYBA&usg=AFQjCNEdSN0tw2xDahSnQ-4ddkxSwt8raA
- 143 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=2&ved=0CCcQFjAB&url=http://d.hatena.ne.jp/yk5656/20140301/1394248311&ei=ZHU8VM2tNsz48QWrgoLgDg&usg=AFQjCNHAGYwf8mMdElBb2RK7qHIag4KbEg&sig2=kLV1K88BnnFBB6_Wfnh2nA
- 120 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&ved=0CCcQFjAC&url=http://d.hatena.ne.jp/yk5656/20140122/1391124017&ei=MnU8VOQj1uHwBZaVgZgB&usg=AFQjCNE2VIo-lyqcYIErsxRi7nfwWpS8xg
- 103 http://pipes.yahoo.com/pipes/pipe.info?_id=f8e50936209277c7946c9bc16b988bf7
- 75 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=4&ved=0CDMQFjAD&url=http://d.hatena.ne.jp/yk5656/20140410/1397390498&ei=ZX48VK3pJtKB8gX-_4CoBQ&usg=AFQjCNF1LuEjWOD1lJMpQuaklrMjrDmPKw&bvm=bv.77161500,d.dGc
- 59 http://www.google.co.jp/url?url=http://d.hatena.ne.jp/yk5656/20140604/1403307653&rct=j&frm=1&q=&esrc=s&sa=U&ei=pnw8VOyBJszN8gXX9oGYBQ&ved=0CCYQFjAD&usg=AFQjCNHOfYcWst6dHaDPF-43UFsx0nEsRQ
- 48 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&frm=1&source=web&cd=1&ved=0CB0QFjAA&url=http://d.hatena.ne.jp/yk5656/20140523/1402455511&ei=X3I8VPfyJMP48QWgu4D4BA&usg=AFQjCNEogw5Iz9IBxpXstKJQJKTvm96chQ
- 47 https://www.google.com/
- 43 http://www.google.co.jp/url?sa=t&rct=j&q=&esrc=s&source=web&cd=5&ved=0CEsQFjAE&url=http://d.hatena.ne.jp/yk5656/20140102/1388657229&ei=hc3-UvnxH4XTkQWiroCgBw&usg=AFQjCNFeqrGQP03Nb2z2ogcQexOnFfwRKw&sig2=SwLRVNDd8Zv6YSIvfBSzVA&bvm=bv.61535280,d.