読者です 読者をやめる 読者になる 読者になる

u16suzuの blog

u16suzu のブログです。

railsのビューに関してまとめ

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