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
Toolbarで表示する矢印アイコンの色を変えたい

http://stackoverflow.com/questions/26788464/how-to-change-color-of-the-back-arrow-in-the-new-material-theme 動的に色を変えるイイカンジな方法が分からず困っていた。 …

300px-Ruby_logo
Ruby,Railsのチートシート

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

no image
Docker導入したらどうするの?

Dockerを導入したけど、nginxが入った環境がどこでも使えるようになった!程度だったらあんま意味ないよね。 Web開発をする上でDockerをどのように使うのが効果的か考えてみる。 …

no image
DockerでNginxしたい

Contents1 Dockerfileを用意する2 …

no image
Mastodonインスタンス(お一人様用)を作り方メモ

Mastodonは運営の存在を気にせず罵詈雑言吐けるの便利そう。 自分用のインスタンス作ったので、便所の落書きしておく。 …

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

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

no image
iOSアプリの設計ってどうやるの?

ViewControllerに処理を詰め込みすぎて保守が大変になるのはあるあるネタですよね。 じゃあ、ViewControllerでやることってなんだろうって問われると、まあ、こんなんだろうなってフワッとしてる。 …

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

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

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

整理がてらメモ。 Contents1 …

no image
Swiftで追加したサードパーティなモジュールを更新する方法

SwiftにはCocoaPodsのようなライブラリを管理するツールがないので、手で追加します。 手で追加したライブラリのバージョンを更新したいときどうすればよいか。 …