moxt

Just another Blog site

意識低いRuby on Rails再入門2

      2015/07/03

Modelを作り、コンソール上からデータを追加した。
次はこのデータをlocalhost:3000にアクセスしたときに表示させてみたい。

Controllerを追加する

Ruby on RailsではMVCフレームワークを採用している。
CであるControllerは、サーバに来たアクセスの内容を適切な処理部隊に移譲したり、アクセスを処理するために必要なModelやViewを呼び出して適当なレスポンスをクライアントに返す。いわば調整役である。

Modelを作成したときと同様にgenerateコマンドでControllerを作る。

これでItemクラスのControllerができたindexはItemクラスの一覧を取得するルートを示している。
他にもItemクラス単品を表示するためのshowやItemクラスを追加するcreateなんかも指定できる。

Controllerが作成できたらrails sコマンドでアプリを起動し、localhost:3000/items/indexにアクセスしてみる。

こんな感じのテキストが表示されたらOK
このindex.html.erbというファイルがViewに該当する。
このファイル内でItemクラスの中身を描画するように編集してゆけばよさそう。
というわけで、実際にItemクラスの情報を表示させてみたい。

その前にerbからslimに移行したい。

http://qiita.com/moriyaman/items/c0d60406422677bcb398

ここを参考に移行する。

index.html.slimを次のように書き換える

@itemsというリストをeachで回しつつtitleを表示してる。

localhost:3000/items/indexにアクセスするとエラー画面が表示されるはず。

ControllerからViewに対して@itemsを渡してないからだ。

なので、items_controller.rbのindexメソッドで@itemsを定義する。

どのViewを使うか指定しなくても良いのか?という疑問を抱く。
RailsはViewの指定が無ければ勝手にそれらしいViewを選択して使うようになっている。

items_controllerはItemクラスのControllerなので、views/items/フォルダ以下のViewファイルを探す。
Controllerのindexメソッドを呼び出した場合にviews/items/index.html.slimというファイルが存在すれば、このファイルを使ってViewをレンダリングする。

Modelの内容を表示するウェブアプリが完成した。

ネクストアクション(雑談)

このウェブアプリの方向どうしてゆくかによって、次にすべきアクションは変わってくる。

見た目やアニメーション、インタラクティブ性を付加したいのであれば、CSSやJS寄りのを実装を進めていくだろう。
100万件のItemを一瞬で表示したいとなれば、DBのチューニングやら、キャッシュサーバの設置が必要になるだろう。
Itemを投稿する画面が欲しいとなれば、投稿画面のViewや投稿処理を担うメソッドをControllerに追加する必要があるだろう。

機能追加という大きなタスクをレイヤーごとに細かく分解して、小さなタスクに落としこむと良いと思ってる。
○○したい、という欲望だけ掲げても、じゃあ実際に何をしていいか分からないという状況に陥りやすい。
もちろん、プログラミングセンスがある人は○○したいだけで平然とモノを作れるだろう。
ただ、自分のような凡人だと考えなければいけない範囲が多すぎて、TODOが整理されず悶々して時間を費やすことになる。

繰り返しになるが、○○をするためには何が必要なのか、Modelを追加しないといけないのか、CSSを書き換えないといけないのか、という具体的な要素に分解しようとすることが大事。
そうすると、分かるものと分からないものの境界が見えてくるので、その境界を分かる側に推し進めていけば良い。
この境界を見つけることが効率よく技術を習得してゆくコツかなと思ってる。

適当にググってstackoverflowとかのtipsをコピペして、なんとか動かす。って技術も大事だけどw

 - プログラミング

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

  関連記事

no image
YosemiteでRubyMineが起動できない

yosemiteからjavaが1.7系になってる。 一方、rubymineは1.6系を想定している。 …

no image
SeleniumでChromeを自動操作したい

Seleniumという便利なソフトウェアがあります。 これはブラウザ上の操作をスクリプト化し自動化することを目的としています。 …

Ruby,Railsのチートシート

こういうのブログ形式じゃなくてwikiの方が良いのでは。。 と、遠い目をしつつ。 …

no image
SwiftでOSのバージョンが8.0.0以下とそれより大きいヤツで処理を分岐させたい

前置き push通知のデバイストークン取得方法がiOS8から変わりました。 …

no image
MecabをPythonから使いたい

ベイズ分類器を自分で作りたかった。 そのためには、文書を単語の集合に変換する必要がある。 …

no image
『Tutorial & Hackathon #1』をやってみる

https://pydata.tokyo/news/pydata.tokyo-tutorial-hackathon-1 タイタニックの乗客データから生存者の推定モデルを作成してる。 …

no image
意識低いRuby on Rails再入門1

整理がてらメモ。 Contents1 …

no image
gitであまり使わないけど知らないと困るコマンド一覧

随時追加 originのURLを変更したい …

no image
ディープラーニングが気になる

ダラダラとメモ。 Contents1 …

nokogiriでスクレイピングするときによく忘れるヤツ集

書くことで記憶を定着させる施術。 class,id以外の属性を指定してタグを探したい …