Viewについて(赤本P453)

検証メソッド(validate)

ユーザ登録等のパスワードを2箇所書いて一致するか検証するやつ(赤本P360)

validates_confirmation_of :password (modelファイル)
viewファイルは、
<%= password_field "user", "password" %><br/>
<%= password_field "user", "password_confirmation" %><br />
こんな感じ。

テンプレート(赤本P453)

種類 説明 使う?
Builderテンプレート Ruilderライブラリを使ってXMLレスポンスを構築する。 たぶん使わない
ERbテンプレート コンテンツにRubyコードを埋め込んだもの。主にHTMLページの生成に使う。 使う
RJSテンプレート ブラウザで実行されるJavaScriptを作成する。主にAjaxなWebページとやり取りする。 使う

ヘルパーメソッド(赤本P458)

  • コントローラごとにRubyコードをまとめておく感じ(ViewとModelの分離)。

フォーマットヘルパー 結果 説明
<%= distance_of_time_in_words(Time.now, Time.now + 33, false) %> 1minute  
<%= time_ago_in_words(Time.local(2004, 12, 25)) %> 116days  
<%= number_to_currency(123.45) %> $123.45 数値を貨幣として表記する。
<%= number_to_percentage(66.66666, :precision => 1) %> 66.7% 数値をパーセント表記にする。
<%= number_with_delimiter(12345678, "_") %> 12_345_678 3桁区切りで表記する。区切り文字の指定可能(デフォルトは",")
<%= number_with_precision(50.0/3) %> 16.667  
<%= debug(params) %>   値の表示
<%= simple_format(@trees) %>   改行や改段がそのままの形で保持される。<pre>を使うくらいならコレ使うのかな?
<%= excerpt(@trees, "lovely", 8) %> ...A poem lovely as a tre... 対象単語の前後8文字まで表示?
<%= truncate(@trees, :length => 20 %> I think that I sh... 先頭から20文字まで表示。
<%= cycle('list-line-odd', 'list-line-even') %>   繰り返しごとに交互に値を適用。赤本P76。class名を交互に変更することも可能。

リンクヘルパー(P462) 説明
<%= link_to "[表示文字列]", [リンクターゲット], [HTML属性] %> 基本形。button_toメソッドも同様らしい。
リンクターゲットオプション(複数の場合は{}で囲む)
:action => "add_comment" 実行するメソッドを指定。
:id => @product idにオブジェクトを指定。使いたくないかも。
:controller => 'articles' コントローラの指定。
HTML属性オプション(複数の場合は{}で囲む)
:class => "dangerous" クラス属性の値を指定・・・かな?
:confirm => "いいのかい?" 確認メッセージの表示。
:method => :post リクエストタイプの指定。javascriptが無効だとGETになるらしい。
:remote => true Ajaxリクエストが飛ぶ。
popupはjQueryで! http://e2designer.seesaa.net/article/154966640.html
条件付きリンクヘルパー(P463)
<%= link_to_if() %> trueの時ハイパーリンクを生成。falseの時はテキストだけ。
<%= link_to_unless() %> link_to_ifの逆。
<%= link_to_unless_current() %> サイドバーにメニューを作成する?

画像タグヘルパー(P463) 説明
<%= image_tag("[URL]" (,[オプション])) %> 基本形。link_toの中に組み込める。
オプション(複数の場合は","で区切る)
:size => '120x65' どう見てもサイズの指定です。
:alt => '[alt属性の文字]' 画像に対して付加する文字列
:align => 'center' 画像の位置を指定する。
:border => 0 枠線の太さだと思ふ。

フォームの機能

form_for(P468)

  • DBにテーブルがあるモデルのフォーム入力に使うみたい。
<%= form_for :product, :url => {:action => :create} do |form| %> 
  タイトル:<%= form.text_field :title, :size => 30 %>
  価格:<%= form.text_field :price, :size => 10 %>
<% end %>
フォームの中身(P471) 説明
form.text_field([:属性], [オプション]) 通常のテキストフィールド
form.hidden_field([:属性], [オプション]) hiddenのテキストフィールド
form.password_field([:属性], [オプション]) パスワードのテキストフィールド
form.text_area([:属性], [オプション]) 通常のテキストエリア
form.radio_button([:属性], [タグ値],[オプション]) ラジオボタン
form.check_box([:属性], [オプション], [オン値], [オフ値]) チェックボックス
form.select([:属性], [選択肢], [オプション], [HTMLオプション]) ドロップダウンリスト
form.label([:オブジェクト], [:メソッド], ['文字列'], [オプション]) ラベル
日付と時刻フィールド たくさんあるからP475参照

form_tag(P484)

  • <%= form_tag({:action=>:[メソッド名]}, :remote=>true) do %> <% end %>



部分テンプレート(P493)

  • <%= render '[部分テンプレート名]', :[変数名]=>[値] %>
  • 共通の処理をまとめておくもの。
  • _(アンダーバー)から始まるファイル名を使う。ex)_task.html.erb
  • viewの標準ディレクトリに保存する。
  • <%= render 'task' %> ※当然オプションはあるよ。
  • 指定する時はアンダーバーとか拡張子は書かない。
オプション 説明
:partial => "article" 部分テンプレート名。Rails2まで?
:locals => {:var => "a"} 部分テンプレートに渡す変数の指定。Rails2まで?
:object => @article 部分テンプレートに渡すインスタンス変数の指定。部分テンプレート内では、同じ変数に格納される。
:collection => @article_list 部分テンプレートを実行するコレクションの指定。各要素は部分テンプレート名と同じ変数に格納される。
:spacer_templete => "spacer" コレクション間に表示するテンプレート。まぁあると便利くらい。

Rails2.2 Rails2.3
<%= render :partial => 'hoge', :object => @hoge %> <%= render @hoge %>
<%= render :partial => 'piyo', :collection => @piyos %> <%= render @piyos %>


  • 最終更新:2010-12-01 17:04:51

このWIKIを編集するにはパスワード入力が必要です

認証パスワード