Rails APIにのっているのを日本語でまとめただけ
concat
<% concat "foo" %>
# == <%= "foo" %>
View側でロジック書きながら、画面にも反映させたい場合に使えるかも。
<%
if @current_user
concat current_user.name
else
concat "Guest"
end
%>
使ったことはない。
cycle & current_cycle
非常によく使う。
コピペ
<% @items.each do |item| %>
<div style="background-color:<%= cycle("red","white","blue") %>">
<span style="background-color:<%= current_cycle %>"><%= item %></span>
</div>
<% end %>
これ使わないとこうなるはず(動くかは知らない)
<% colors = %w(red white blue) %>
<% @items.each_with_index do |item, i| %>
<% color = colors[i % 3] %>
<div style="background-color:<%= color %>">
<span style="background-color:<%= color %>"><%= item %></span>
</div>
<% end %>
reset_cycle
もあるようだ。
excerpt
使う頻度は低い。
でも、知らないと困るケース結構ある
2つ目の引数の文字が最初に見つかったところから、radius
文字分だけ取り出し、
それ以外の部分は omission
(デフォルトは...
)にする
<%= excerpt("あいうえおかきくけこさしすせそ", "く", radius: 3) %>
# => "...おかきくけこさ..."
この場合は、最初にく
が見つかった箇所の前後3文字を取り出してそれ以外は...
にしている。
highlight
と組み合わせて次のように使えるかもしれない。
検索された文字を中心として30文字取り出し、検索文字をハイライト表示させる例
<% str =<<-EOS
吾輩は猫である。名前はまだ無い。
どこで生れたかとんと見当がつかぬ。
何でも薄暗いじめじめした所でニャーニャー泣いていた事だけは記憶している。
吾輩はここで始めて人間というものを見た。
しかもあとで聞くとそれは書生という人間中で一番獰悪な種族であったそうだ。
EOS
%>
<%= highlight(excerpt(str, "薄暗い", radius: 30, omission: ''), "薄暗い") %>
吾輩は猫である より
highlight
文字列中の指定された文字を強調表示させる。
デフォルトの強調表示させるタグは<strong class="highlight">...</strong>
またもやコピペ(非常にわかりやすい)
highlight('You searched for: rails', 'rails', :highlighter => '<a href="search?q=\1">\1</a>')
# => You searched for: <a href="search?q=rails">rails</a>
なお、2つ目の引数は配列が指定可能。
highlight('You searched for: rails', ['for', 'rails'], :highlighter => '<em>\1</em>')
# => You searched <em>for</em>: <em>rails</em>
truncate
有名人なはず。
文字列の先頭からlength
分だけ切り出してくれる。
omission
+ 切り出した文字列 = lengthとなるように調整するため、
若干の注意が必要。
<%= truncate("あいうえおかきくけこ", length: 5) %>
# あい...
<%= truncate("あいうえおかきくけこ", length: 9) %>
# あいうえおか...
<%= truncate("あいうえおかきくけこ", length: 10) %>
# あいうえおかきくけこ
デフォルトのomission
は...
(3文字)であるので、
length: 5とした場合は、元の文字列は2文字しか表示されないことになる。
word_wrap
文字列中の指定された位置(line_width
)以降に出現する空白文字の箇所に\n
をいれてくれる
日本語圏だと使えない子のようにも見える
<%= word_wrap("あいうえお かきくけこ さしすせそ", line_width: 5 %>
# =>
あいうえお\n
かきくけこ さしすせそ
※line_widthを指定しない場合は 80文字
※line_width文字目以降に出現する\s
なので、上記例の場合は line_width: 4にしても同じ結果になる
※かくくけこ[全角空白]さしすせそ
、。全角空白 でも\n
が入るようになれば、あるいは使えるかもしれない。