読者です 読者をやめる 読者になる 読者になる

感謝のプログラミング 10000時間

たどり着いた結果(さき)は、感謝でした。

POSTされた値からレコードを新規に作成、テーブルに格納する。

Rails
<スポンサーリンク>

まずは基礎知識を順番に見ていって、その後に、実際に使ってみます。
テーブルから全レコードを取り出すには、allというメソッドを使います。

変数 = モデルクラス.all

このallを使えば、すべてのレコード情報が取得できる。

モデルクラスでレコードを新規に作成するには以下のような構文を使います。

変数 = モデルクラス.new ( :カラム1 => 値, :カラム2 => 値, ・・・)

例)

Sample.new( :name =>"ほげ", :age => 28, :mail => "hoge@hoge.co.jp")

このように作ったインスタンスをテーブルに保存するには、

インスタンス.save

というメソッドを使います。

それでは、上の知識を使って、モデルを作ってみましょう。
まずはモデルを作るコマンドを。

rails generate model blogger name:string pv:integer url:string

rakeでテーブルを作ります。

rake db:migrate

一緒にコントローラーも作ります。

rails generate controller bloggers index hoge fuga

postのリクエストを受け取れるように、routes.rbを修正します。

Myapp::Application.routes.draw do
  get "bloggers/index"
  post "bloggers/index"
end

これでpostのリクエストもさばける・・・けれど、コントローラーのメソッドは両方indexですよね。
どうやって、postって判断するの?

答えは、コントローラの中で、request.post?というメソッドを作って、postに対する処理を書きます。

bloggers_controller.rb

class BloggersController < ApplicationController
  def index
    if request.post? then
      obj = Blogger.new(
        :name => params['name'],
        :pv => params['pageview'],
        :url => params['url']
      )
      obj.save
    end
    @datas = Blogger.all
  end

  def hoge
  end

  def fuga
  end
end

@datas = Blogger.all
というのは、テーブルに格納されたデータをすべて取り出しているところです。

Railsはこのデータの取り出しや格納、Viewへの引き渡しがかなり抽象化されているため、若干中で何やってるんだろうと不安ではありますが、正直とても楽です。

Javaでデータを取り出してforループ回すのって面倒だったからなー。

最後に、Viewを見てみましょう。
取り出したデータをテーブルにして表示します。

index.html.erb

<h1>Bloggers#index</h1>

<form method="post" action="/bloggers/index">
<table>
  <tr>
    <th>NAME:</th>
    <td><input type="text" name="name"></td>
  </tr>
  <tr>
    <th>PAGE VIEW</th>
    <td><input type="text" name="pageview"></td>
  </tr>
  <tr>    
    <th>URL:</th>
    <td><input type="text" name="url"></td>
  </tr>
  <tr>
    <th></th>
    <td><input type="submit"></td>
  </tr>
</table></form>

<hr/>
<table>
<tr>
  <th>ID</th>
  <th>NAME</th>
  <th>PV</th>
  <th>URL</th>
</tr>
<% @datas.each do |data| %>
<tr>
  <td><%= data.id %></td>
  <td><%= data.name %></td>
  <td><%= data.pv %></td>
  <td><%= data.url %></td>
</tr>
<% end %>
</table>

これをブラウザで表示すると、以下のようになります。
f:id:sho322:20140411003046p:plain

<参考文献>
HerokuではじめるRailsプログラミング入門