rails の view に関する なかなか覚えきれない事柄を記述しておきます。
erb のコメントの書き方
<%# erbのコメントその1 %> <%= =begin erb のコメントその2 =end %>
concat
出力するコードをスクリプトブロックの中に埋め込む
<% if 2.odd? concat label_tag 'jiji' end %> <% if 3.odd? concat label_tag 'kiki' end %>
capture
テンプレートを変数に格納する
<% @var = capture do %> ただいまの時刻は<br> 3時です <% end %>
呼び出し方
<%= @var %>
出力
ただいまの時刻は 3時です
ビューヘルパ
# モデルオブジェクト user のプロパティの一覧を表示するヘルパ def user_prop_list( collection, prop ) content_tag(:ul) do collection.each do |elem| # concatメソッドを使うことで制御構造(script block)の中で 出力テキストを生成している。 concat content_tag( :li, element.attributes['prop']) end end end
user の名前と年齢を一覧表示するヘルパ
def user_name_age_list( collection ) content_tag(:ul) do # content_tag メソッドはブロック引数をとれる collection.each do |element| concat content_tag( :li, element.attributes['name'] + ' : ' + element.attributes['age'].to_s) end end end
blockをとるビューヘルパ
def block_helper( &block ) capture &block end
# block で渡された文言を繰り返すhelperメソッド def block_helper( time, &block ) time.times { yield } end
blockを省略可能なビューヘルパ
# blockを省略可能なメソッド def omissible_block_helper( &block ) if block_given? capture &block else ' no block given.' end end