列追加、削除時のマイグレーションの名前
p111より。
以下のようにするとTABLEとした箇所をRailsがテーブル名として認識してくれる。
add_XXX_to_TABLE
remove_XXX_from_TABLE
モデルのfind_by_hogeメソッドについて
p112より。
Active Record は定義されていないメソッドの呼び出しを認識すると、
そのメソッドがfind_byという文字列で始まり列の名前で終わっていると見抜きます。
そして動的にファインダメソッドを作成し、それをクラスに追加します。
マイグレーションのメソッド
p113より。
# db:migarte、db:rollback時によきに計らって処理してくれる
def change
end
# rake db:migrate時に実行される
def up
end
# rake db:rollback時に実行される
def down
end
xxx_path、xxx_urlのどちらを使うべきか?
p120より
リダイレクトの場合はxxx_url、それ以外の場合はxxx_path。
xxx_urlはhttp://~、xxx_pathは/xxxのような値が返される。
部分テンプレート
p127より。
、部分テンプレートをレンダリングするメソッドにはコレクション
(collection)を渡すことができ、そのメソッドはコレクション内の各項目に対して 1 回ずつ自動的
に部分テンプレートを呼び出す、
デフォルトでは、レンダリング対象のオブジェクトと同じディレクトリに配置し、
テーブル名と同じ名前にします。ただし、部分テンプレートと通常テンプレートの名前を区別するため
Rails はファイルの検索時に部分テンプレートの名前の先頭に自動的にアンダースコア( _ )を追加します。
部分テンプレートの内部では、テンプレート名と同じ名前の変数を使って現在のオブジェクトを参照できます。
Ajax
p132からp133より。
リンクを生成するなどの処理で引数の:remoteにtrueを設定。
button_to 'カートに入れる', line_items_path(product_id: product),
remote: true
該当のメソッドにJs形式の応答を追加。
format.js
JavaScript用のテンプレートを追加。
.html.erbが通常のHTMLテンプレートで.js.erbがJavaScript用のテンプレート。
ファイル名はメソッドと同じにする。
create.js.erb
$('#cart').html("<%= render @cart %>")