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

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

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


🍣 フォーム関連のメソッド

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

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

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

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

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

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

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

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

xxxx_field オブジェクト名, プロパティ名
text_area オブジェクト名, プロパティ名
radio_button オブジェクト名, プロパティ名
check_box オブジェクト名, プロパティ名
* form_forではオブジェクト名を省略

Rails 4ではHTML 4対応のxxxxx_fieldも用意されています。

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

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

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

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

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

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

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

サブミットボタンの生成

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

😸 そのほか便利メソッド

改行文字を


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

<% 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メソッドを使うとテンプレートの一部を変数に格納できる。

- @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()でブラウザで表示した履歴のひとつ前のページへ戻ります。

url_for(:back)

📚 おすすめの書籍