Skip to content

Instantly share code, notes, and snippets.

@tkawa
Created July 6, 2014 08:12
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save tkawa/c91742549e9eda33dd25 to your computer and use it in GitHub Desktop.
Save tkawa/c91742549e9eda33dd25 to your computer and use it in GitHub Desktop.

RailsGirls, More! #14 2014.07.06

Rails Girls ガイド を最初から進めていきました。

環境設定

Mac OS X 10.9.2

ステップ 3-Bに従って、rbenvを使ってRuby 2.1.2をインストール。

gem i rails

テキストエディタはSublime Textをダウンロード済み。

Macでアプリをインストールするには、ダブルクリックして開いたウィンドウからアプリアイコンを「アプリケーション」にドラッグ&ドロップしましょう。

2 はじめてのRailsアプリ

そして、Terminal上で次のコマンドを入力します。 :

rails new railsgirls

ここでRailsがインストールされていないエラー。

~/.rbenv/shims/railsがなぜか入っていなかったので、gem i railtiesを実行すると無事実行可能に。

Scaffold

rails generate scaffold idea name:string description:text picture:string
  • stringは短いテキスト≒1行の入力
  • textは長いテキスト≒複数行の入力

rails newrails generateでいろいろ生成されるが、コードを書いていくところは主にコントローラ app/controllers, モデル app/models, ビュー app/views の3つ。

デザインする

HTMLはビューに置かれますが、表示される内容と構造しかありません。文字の大きさ・色・装飾などはHTMLには書きません。それらはスタイルシート(CSS)に書きます。 app/assets/stylesheets の下です。

body { padding-top: 100px; }
footer { margin-top: 100px; }
table, td, th { vertical-align: middle; border: none; }
th { border-bottom: 1px solid #DDD; }

margin, padding, borderはよく使います。

borderが枠線、marginが外側の余白、paddingが内側の余白。

写真アップロード機能を追加する

<%= image_tag(@idea.picture_url, width: 600) if @idea.picture.present? %>

画像を表示するためにはimgタグを使います。<img src=...>とそのまま書いてもいいですが、Railsには便利のためimage_tagというものが用意されています。Railsの機能なので<%= ... %>の中に書きます。

pictureがない(空の)ときにはimgタグを出さないように、if @idea.picture.present?を付け足します。

routes を調整する

config/routes.rb はブラウザのURLとRailsの処理内容(コントローラ)を結びつける対応を書くものです。しかし内容はresources :ideasしかありません。

scaffoldのように「Railsのルール」に沿っている場合は、resourcesを書くだけでいいようになっているためです。「Railsのルール」に沿っていればほとんど処理を書かなくてよい、というのはRailsの特徴です。(Convention over Configuration

今後

続きの「アプリにページを追加する」や、その先「6 bootstrap を使ってモダンなデザインにしましょう」をやってみましょう。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment