RoR入門第4回
部分テンプレートが使用できる。
部分テンプレートはファイル名を「"_" + 部分テンプレート名」とする。
部分テンプレートに渡した引数は部分テンプレート名と同じ名前の変数でアクセスできる。
<%# 単項目用 %> <%= render(:partial => 部分テンプレート名, :object => 引数) %> <%# 複数項目用 %> <%= render(:partial => 部分テンプレート名, :collection => 引数) %>
Ajaxを使用するには特定のライブラリを読み込む必要がある。
<% javascript_include_tag :defaults %>
Ajax用のボタン
<% form_remote_tag :url => {:action => Action名, :id => ID} do %> <%= submit_tag "ボタン名" %> <% end %>
Actionの最後でrepond_toを呼び出す。
respond_to do |format| format.js end
RJSテンプレートを使用してDomを書き換える。
RJSテンプレート名は「Action名 + ".js.rjs"」。
#対象の要素を書き換え page.replace_html(書き換え対象要素のID, :partial => 部分テンプレート名, :object => 引数) #ビジュアルエフェクトを追加 page[対象要素のID].visual_effect :highlight, :startcolor => "#88ff88", :endcolor => "#114411"
タグを生成するヘルパーメソッド。
開始タグと閉じタグの間にブロックの戻り値を挿入する。
条件によって適用するスタイルを変更する等、他のヘルパーメソッドの中から使うと便利。
content_tag(タグ名, 属性Hash, ブロック)
Railsのマイグレーションは外部キー制約をデータベースに依存しない方法で設定することができない。
db/schema.rbにも外部キー制約が格納されない。
アプリケーションで担保しなさいという思想なんだとか。
関連はModelに以下のように設定する。
#1対多(多) has_many :モデル名(複数形) #1対多(1) belongs_to :モデル名(単数形)
関連するモデルのセットは下記のようにする。
こうすれば外部キーが自動的にセットされるのだとか。
モデル名(複数形) << モデル モデル名(単数形) = モデル
Ajaxのデバッグは難しいから、少しずつインクリメンタルに開発すること。
form_forヘルパーメソッドでformのコンテキストを作成する。
このformはこのモデルと紐づいてますよ、という感じか?
<% form_for :モデル名, url => {action => :Action名} do |form| %>
フォームを空っぽの状態で表示するときもコントローラのインスタンス変数@orderが必要?
フォームをSubmitした後は下記のようにしてアクセス可能。
params[:モデル名]の中身はリクエストパラメータが入っているHashみたい。
モデルクラス.new(params[:モデル名])