参考にした記事URL一覧
- 小学生でもわかるRuby on Rails入門 | OpenBook
- データベースとの接続(PostgreSQL編) - Ruby on Rails with OIAX
- [Rails]既存のMySQLテーブルに接続する方法 - Qiita
- Ruby on Rails 4.0正式リリースとBootstrapの正しい設定法 | ユービックログ研究所
- #328 Twitter Bootstrap Basics - RailsCasts
- Rails - link_to の引数と展開の違いまとめ - Qiita
基本的なところは小学生でもわかるRuby on Rails入門 | OpenBookをなぞってみる。 ただし、PostgreSQLの既存テーブルを使い、テンプレートにBootstrapを使うので、途中から色々やることが変わっている。
$ rails new bocho
Ruby on Railsを入れてみたに注意点であげたようにGemfileからtherubyracerに関する行をコメントアウトしてbundle install これをしないとrails g controllerコマンドで
autodetect': Could not find a Javascript runtime. ...'
というエラーが出た
$ rails g controller events index show
と入力してビューとコントローラーを作った。これの意味はeventsというコントローラーとindex、showというビューを作る。ビューはスペース区切りで複数書けるみたい。indexはデータ一覧、showは個別データの表示を意味している ファイルとしては
app/controllers/events_controller.rb
app/views/events/index.html.erb
app/views/events/show.html.erb
が出来る。events_controller.rbにはindexとshowメソッドが入っている
確認
$ rails s
でサーバを起動させて、[http://0.0.0.0:3000/events/index]と[http://0.0.0.0:3000/events/show]を確認
Events##index
Find me in app/view/events/index.html.erb
みたいなメッセージが出てたらおk
コントローラー、ビューを修正
ビューって言っていいのかテンプレートなのか良くわからないけどapp/views/events/show.html.erbを修正
<h1><%= @event[:name] %></h1>
これで[http://0.0.0.0:3000/events/show]を確認するとエラーが表示される。
@eventが登録されてないので、コントローラーで登録する
def show
@event = Hash.new
@event[:name] = 'hoge'
end
これでさっきのURLにアクセスすると
<h1>hoge</h1>
と表示される。なるほど@変数名に値を入れたらテンプレでアクセス出来るようになるのね。
URLにパラメーターを入れる
テーブルのidが1のデータを[http://0.0.0.0:3000/events/show/1]で表示出来るように考える。 そのためにはconfig/routes.rbを
get "events/show/"
get "events/show/:eventid" => "events#show"
こうすると上のURLにアクセスするとevents_controller.rbのshowメソッド内でparams[:eventid]に1が入る events_controller.rbを次のように変えると
def show
@event = Hash.new
@event[:name] = params[:eventid]
end
[http://0.0.0.0:3000/events/show/1]にアクセスすると
<h1>1</h1>
と表示されるようになる。(あくまでこういうコードはテスト用) とりあえずここまで