初めてのruby開発 - 一覧表示・登録開発編
前回はモデルの作成、コントローラーの作成を行いました。
また、ルーティングの設定までを行いましたので、
今度は、実際にコントローラーにメソッドを作成し、ビューをつけていきたいと思います。
装飾に関しては、放置でw
目次を作成しました!以下のページへ!
初めてのruby開発 - 目次 - Program LOG
参考にしたサイト
#06 rails db/rails consoleを使おう | Ruby on Rails 4入門 - プログラミングならドットインストール
Railsドキュメント
Railsで確認画面の基本 - 篳篥日記
rails console
まずは、トップページを作成してみようと思います。
作成するにはテスト的にデータが必要となりますので、以下の管理コマンドを使用して
登録していきたいと思います。
[vagrant@localhost simplebbs]$ rails console Loading development environment (Rails 4.1.0) irb(main):001:0> Bbs.create(title: "testTitle",body: "testBody",username: "takumi", deletepwd: "pwd") (0.1ms) BEGIN SQL (45.6ms) INSERT INTO `bbs` (`body`, `created_at`, `deletepwd`, `title`, `updated_at`, `username`) VALUES ('testBody', '2014-04-29 05:23:49', 'pwd', 'testTitle', '2014-04-29 05:23:49', 'takumi') (8.8ms) COMMIT => #irb(main):002:0> Bbs.create(title: "testTitle2",body: "testBody2",username: "takumi", deletepwd: "pwd", resid: "0") (0.3ms) BEGIN SQL (0.5ms) INSERT INTO `bbs` (`body`, `created_at`, `deletepwd`,`title`, `updated_at`, `username`) VALUES ('testBody2', '2014-04-29 05:25:34', 'pwd', 'testTitle2', '2014-04-29 05:25:34', 'takumi') (8.4ms) COMMIT => #
rails consoleはrailsを簡単に実行テストできるツールとなります。
便利なのでちょいちょいテストでは使いたいと思います。
一覧ページの作成
先ほど登録したデータを取得して、一覧表示します。
まずはモデルから情報を取得するのですが、bbs_controller.rbファイルを編集していきます。
def index @bbsitem = Bbs.all end
モデルから全ての情報を取得するにはこれでいいらしいので、そう指定しました。
実際には、10件だけ取得したいので、以下のようにしました。
def index @bbsitem = Bbs.order("created_at DESC").limit(10) end
次にビューを作成していきます。
ビューは「app/views/bbs/」の中にファイルを作成します。
今回はindexメソッドに対するviewなので「index.html.erb」として作り、以下のコードを挿入しました。
<table> <tr> <td>タイトル</td> <td>名前</td> <td>登録日</td> <td>--</td> </tr> <% @bbsitem.each do |v| %> <tr> <td><%= link_to v.title, "/bbs/show/#{v.id}" %></td> <td><%= v.username %></td> <td><%= v.created_at.strftime("%Y年%m月%d日") %></td> <td><%= link_to "編集", "/bbs/update/#{v.id}" %>:<%= link_to "削除", "/bbs/delete/#{v.id}" %></td> </tr> <% end %> </table>
これで、ブラウザから「simplebbs.net」へアクセスすれば先ほど登録したテストデータが表示されているはずです。
無事に確認できたら、次は各種共通ページを修正しておきたいと思います。
layoutsを変更してみよう!
Bodyタグの中身を以下のように設定しました。
<h1>SimpleBBS</h1> <%= yield %> <br><br> <%= link_to "HOME" , "/" %> | <%= link_to "新規登録" , bbs_create_path %>
<%= yield %>にはviewで設定したものが挿入されます。
先ほどはスルーしましたが、その他に「link_to」というのがあります。
Railsには、リンクヘルパーなるものが存在しています。
実際に出力される際には、以下のようになっています。
<a href="/">HOME</a> | <a href="/bbs/create">新規登録</a>
link_toの後に「リンク名」を入れ、その後に「遷移先」を指定すると、アンカーを自動的に設定してくれます。
また、その次の指定に関しては、ルーティングで設定された「Prefix」を指定する事も出来ます。
これで装飾は除いて、一覧表示が出来ました。
ってか、すごい簡単。。。ちょっと感動w
みんながRubyって連呼する理由が少し分かって来ましたw
登録画面を作ってみる!
さて、一覧が出来たので、登録画面を作成してみたいと思います。
基本的には、登録画面を作成して、バリデーションを通して、エラーが無い場合はDBへ登録し、
completeページへ遷移するといった流れになります。
まずは、一覧の時と同様で、bbs_controller.rbファイルを編集します。
def create @bbs = Bbs.new end
上記を追記しました。
また、同時に「app/views/bbs/」の中に「create.html.erb」ファイルを作成し、
下記のように、追記しました。
<%= form_for @bbsitem, :url => {:action => 'create'} do |f| %> <table> <tr> <td>タイトル</td> <td> <%= f.text_field :title %> </td> </tr> <tr> <td>投稿者</td> <td> <%= f.text_field :username %> </td> </tr> <tr> <td>本文</td> <td> <%= f.text_area :body %> </td> </tr> <tr> <td>削除パスワード</td> <td> <%= f.password_field :deletepwd %> </td> </tr> </table> <%= f.submit:登録 %> <% end %>
次回以降にsessionを用いて確認画面を作ったり、実際にデータをセーブしてみたりと
実際に登録、また詳細情報の取得と表示を行って生きたいと思います。
基本的なプログラミングの概念はPHPの時とほとんど変わりませんが、
実装がかなり楽な印象を受けました。
かなりいい機会なので、実用的な実装を施して、サンプル掲示板を作っていきたいと思います。
使用環境
- ホストOS: Windows7 x64
- VirtualBox: 4.3.10
- Vagrant: 1.5.2
- ゲストOS: CentOS6.4 x64
- Ruby : 2.0.0-p451
- Ruby on Rails : 4.1.0
- passenger : 4.0.41
- apache : 2.2.15
- NetBeans IDE 8.0