酒と泪とRubyとRailsと

Ruby on Rails と Objective-C は酒の肴です!

formやView周りの基礎知識 [Rails4]

今回はRails4のformやView周りの基礎について。最近この辺りの基礎を理解していないことを再認識して猛反中。

ちなみに今回の勉強に使った書籍は、『Ruby on Rails 4 アプリケーションプログラミング』。Rails3でもかなりお世話になった書籍です。僕のRailsの師匠ですw


フォーム関連のメソッド

汎用的なフォームの出力 - form_tag メソッド

前提となるモデルが存在しない、汎用的なフォームの生成に利用するのがform_tagメソッドです。

1
2
3
form_tag(リンク先のURL [,opts]) do
    ... body ...
end

モデル編集のためのフォームを生成 - form_for メソッド

モデル編集のためのフォーム生成には、form_forメソッドを利用します。

1
2
3
form_for (モデルオブジェクト [,opts]) do
    ... body ...
end

入力フィールドを生成するメソッド

入力フィールドを生成するf.Formヘルパーの紹介。

1
2
3
4
5
6
xxxx_field オブジェクト名, プロパティ名
text_area オブジェクト名, プロパティ名
radio_button オブジェクト名, プロパティ名
check_box オブジェクト名, プロパティ名

* form_forではオブジェクト名を省略

Rails4では HTML4対応のxxxxx_fieldも用意されています。

フォーム(form) - Railsドキュメント

選択ボックス、リストボックスの生成 - select メソッド

1
select オブジェクト名, プロパティ名, タグの情報 [, opts]

DBの情報から選択肢を生成する - collection_select メソッド

1
collection_select オブジェクト名 プロパティ名 タグの元になるオブジェクト配列 value属性に割り当てられる要素, テキストとに割り当てられる項目

ラベルテキストを生成する - label メソッド

1
label オブジェクト名, プロパティ名

サブミットボタンの生成

1
submit ボタンキャプション [, opts]

その他便利メソッド

改行文字を


タグで置き換える - simple_form メソッド

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<% article = <<EOL
SAMPLE_FORMのテスト

こんにちは。
これは SAMPLE_FORMのテストです。
EOL
%>
<%= simple_format article, class: article %>

# ↓ HTMLでの出力結果
<p class="article">SAMPLE_FORMのテスト</p>

<p class="article">こんにちは。
<br/>これは SAMPLE_FORMのテストです。
</p>

出力結果を変数に格納する - capture メソッド

captureメソッドを使うとテンプレートの一部を変数に格納できる。

1
2
3
4
5
6
- @var = capture do
  = "Current datetime is #{Time.now}."
end

= @var
%div{style: 'color: red;'}= @var

前のページに戻る - url_for(:back)

url_for(:back)を使うと、現在のページへのリンク元ページ(Referヘッダ)へのリンクを作ってくれる。Referヘッダが空の場合は、javascript: history.back()でブラウザで表示した履歴の一つ前のページへ戻ります。

1
url_for(:back)

おすすめの書籍