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

 - プログラミング

336px




336px




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

  関連記事

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

下記の内容を読んでテスト系の処理をすっ飛ばしたメモ。 http://railstutorial.jp/chapters/sign-in-sign-out?version=4.0#top …

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

ActionViewを使ってModelクラスの新規作成画面を作りたい。 ウェブアプリ上でModelのクラスを作成する。 …

MacでDockerした感想文

Contents1 前提:DockerはLinux上でしか動かない1.1 …

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

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

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

ダラダラとメモ。 Contents1 …

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

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

コードを雑に読むアプローチでScrapyを入門する

Scrapyはスクレイピング用フレームワークなので、登場人物多すぎてよく分からない。 彼らの関係性や役割を理解を深めるために『Data …

no image
sudo gem install cocoapods –preしても0.36.0が使えないとき

最新のcocoapodsそのものはインストールされてる。 なので、podコマンドを実行するときに下記のようにバージョンを指定すれば一応使える。 …

no image
Androidアプリを作るために最低限必要な知識と未知の部分を列挙

作りたいアプリによって必要な知識は変わるかもしれないが。。 個人的過ぎて役に立たないが、整理がてら羅列してみる。 …

scrapy実行時のエラー対処

Macで発生した。 scrapyを実行したら下記のようなエラーを吐いた。 …