Re:Start

いまはディレクターやってます

オフライン生活 2日目

scaffoldを実行するとCRUD機能が既に搭載されたものが自動生成される。

ビューヘルパー

link_to

  • [a]タグに対するオプション情報をハッシュ形式で複数指定できる!!
<%= link_to('Twitter', 'http://twitter.com/') ,
    { :class => 'outer',
    title => '困った時はこちらへ!'}) %>
  • 引数1にハッシュ値, 引数2にモデルの名前を入れると、そのモデルのハッシュ値からURLを生成し遷移する
  • method指定ができる! (ただし内部的にはPOST)

こう記述すると

<%= link_to 'Destroy',
    book ,
    :confirm => 'Are you sure?',
    method => 'delete' %>

変換されてこうなる

<td>
  <a href="/books/1"
    data-confirm="Are you sure?"
    data-method="delete"
    rel="nofollow">Destroy</a>
</td>

image_tag

form_for / form_tag

text_field

※ 返還された後は、data- と出力されるので、ソース上でdata- とあるものはrailsのJSと考えられる

ビュー開発

  • form_tag メソッド
  • submit メソッド
    • オブジェクトの状態に応じてボタンに表示させる名前を切り替えることも可能!!なんと! valueに設定しちゃダメ
  • 表示
  • truncate メソッド : 指定した文字数のみ表示する
  • excerpt メソッド : キーワードに一致した箇所から指定文字数のみ表示する
  • auto_link メソッド : 文中にURLやmailアドレスがあればリンクが貼られる
  • cycle メソッド: 背景色をn行おきに変更する
  • sprintf(FORMAT, obj)
    • 文字列を整形する/変換指定子の利用も可能
  • 日付や数値の変換表示もok! つまり、大概なんでもできるというわけです!!
  • image_tag
    • railsではpublic/images フォルダの配下に保存するのが基本
    • mouseover で表示を切り替えることもできる

— audio_tag, viedo_tag

    • 動画の切り替え, HTML5機能のため、動作しないブラウザもあるので注意

共通で使用したいツールは、全てapplication_helper.rbに記入しておくことでサラリと活用できる

p170~ レイアウト

  • 部分テンプレートを保存する場合には、ファイル名の先頭には[_]を付けなければならない
    • 特定のコントローラのみで使用 => /views/コントローラ名
    • アプリケーション全体で共有 => /views/shared
    • リソースに強く関連づいた部品 => /views/リソース名(複数形)
  • フォルダ名は複数形, ファイル名は単数系になっているのがポイント

SQL

  • destroy は select したあとに delete するので、とりあえず destroy 使っとけ
  • 排他制御したい場合に向けてアレコレ準備されてるからそれも使っていいよ。ってどんだけッ!!

バリデータ

  • Modelに記述する
  • 複数フィールドに対して、同じルールを適用することも可能!!

エラーが出た時の表示を変える

  • _form.html.erb に追記する
  • でも、うまくいかなかったんだよねー。
<%# error handring %>
<% if @book.errors.any? %>
  <div id="error_explanation">
    <h2><%= pluralize(@book.errors.count, "error") %> prohibited this book from being saved:</h2>

    <ul>
    <% @book.errors.full_messages.each do |msg| %>
      <li><%= msg %></li>
    </ul>
  </div>
<% end %>

データとして持たない項目もある

  • 注意書きを読んで同意したときのチェックボックスなど(登録されたらチェック付いてるはずだしね!)
  • でも、バリデータは必要なので、追記する必要があるのだった。ここ重要
  • 空白のときに、他のエラーチェックは外したい => 他のバリデータに :allow_blank => true を追記

その他気になったところ

application.html.erb

頭のCSSやJSの呼び出しの部分がサンプルと違ったので、変更したところ、読み込まなくなった...
そういう読み替えが既に所々で生じているので、動かなかった時はソースを見るのも大事だけど、
何をどう変えたかを覚えておく事も大事。