Create  Edit  Diff  FrontPage  Index  Search  Changes  History  Source  RSS  Note  wikifarm  Login

ActionViewHelper

テンプレート用 helper メソッド リファレンス

るびま5号から移植。テンプレート用の helper メソッドをまとめてみます。

注意: わかりやすさを優先したため、引数が実装と一致していないことがあります。

url_for(options) -> String

[action_controller/base.rb: ActionController::Base]

URL を生成します。特に Rails の Rewrite ルールに沿った URL を生成します (Apache 用のルールは public/.htaccess に定義されています)。

url_for を直接用いることはあまりありませんが、以降に挙げる helper メソッドの url_for_options 引数は、このメソッドに渡ります。

options 引数には主に Hash を与え、key として主に :controller, :action, :id を指定します。

controller => String
contoller 名です。同じ contoller に移動するときは省略できます。
action => String
アクション名です。次に呼び出すアクションを指定します。
id => Fixnum
ID です。次に呼び出すアクションの中で @params["id"] として参照します。

form_tag(url_for_options, html_options = {}) -> String

[action_view/helpers/tag_helper.rb: ActionView::Helpers::TagHelper]

form タグを作ります。

 <%= form_tag :action=>"update" %>
 #=>
 <form action="/debate/update" method="post">

url_for_options は url_for に渡ります。

html_options は HTML のタグ属性に展開されます。

 <%= form_tag {:action=>"update"}, {"name"=>"form1"} %>
 #=>
 <form action="/debate/update" method="post" name="form1">

注意: html_options を指定するときは url_for_options (Hash) の {} を省略できません。

end_form_tag -> String

[action_view/helpers/tag_helper.rb: ActionView::Helpers::TagHelper]

</form> です。たぶん使いません。;)

text_field(object, method, html_options = {}) -> String

[action_view/helpers/form_helper.rb: ActionView::Helpers::FormHelper]

input タグ (type="text") を作ります。

 <%= text_field "topic", "title", "size"=>30 %>
 #=>
 <input id="topic_title" name="topic[title]" size="30" type="text" value="<%=h @topic['title'] %>" />

object, method は Controller との値のやり取りに使うインスタンス変数名とメソッド名です。 テンプレートが展開されるときには、Controller 上で設定した @object.method の値 (例では @topic.title) が input タグの value 値として設定されます。 そして、(form で submit した結果として) Controller のアクションメソッドを実行するときには、@params[object][method] (例では @params['topic']['title']) に value 値が渡ります。

特に Model として ActiveRecord を用いると、この仕様はとても扱いやすく感じられます。 具体的には、Controller 上で @object という名前のインスタンス変数 (例では @topic) に ActiveRecord オブジェクトを設定することで、method に対応する field の値 (例では @topic.title) が input タグの value 値として設定されます。 そして、@params を @topic.attributes = @params['topic'] のように ActiveRecord::Base#attributes= に渡すことで field の更新を行えます。

参考: text_field と同じ要領で使えるメソッドとして、hidden_field, password_field, check_box, text_area があります。

select(object, method, choices, options = {}, html_options = {}) -> String

[action_view/helpers/form_options_helper.rb: ActionView::Helpers::FormOptionsHelper]

select, option タグを作ります。

object, method は text_field などと同じです。 @object.method の値に一致する選択肢があれば、その選択肢が selected になります。

choices は選択肢のキーと値を指定します。指定方法にいくつかパターンがあります。

選択肢を option value にする場合
全ての option value を省略できる場合は、単純に値の配列として指定できます。
 [ "VISA", "Mastercard" ]
選択肢と option value を指定する場合
選択肢として表示される値と、@params[object][method] に渡る option value を両方指定する場合は、配列の入れ子かハッシュで指定できます (ただし、ハッシュで指定したときの順序は未定のような気がします)。
 [["柔らかい", 1], ["普通", 2], ["硬い", 3]]
 { "柔らかい"=>1 ,  "普通"=>2 ,  "硬い"=>3 }

options は今のところ :include_blank => true のみ有効です。これを指定すると、先頭に空の選択肢が追加されます。

参考: 親戚筋に collection_select, country_select メソッドがあります。 日本人向けに都道府県の select モジュールがほしいです。

date_select(object, method, options = {}) -> String

[action_view/helpers/date_helper.rb: ActionView::Helpers::DateHelper]

日付用の select タグを作ります。

 <%= date_select "customer", "birth", :use_month_numbers => true, :start_year =>
 Date.today.year-99, :end_year => Date.today.year, :include_blank => true %>

options にはいろいろ指定できます。

use_month_numbers
月を月名ではなく数字で表します。日本語環境だといつも true にするかも。
start_year
end_year
選択できる最初の年 (西暦) と最後の年です。省略すると今年を真ん中にして前後 5 年になります。
include_blank
true にすると、(年月日の 3 つとも) 先頭に空の選択肢が追加されます。

あと、年月日 時分秒 用の select タグを個別に作ったり、日を消したり秒を付けたりできますが、詳細はリファレンスやソースをご覧ください。

datetime_select(object, method, options = {}) -> String

[action_view/helpers/date_helper.rb: ActionView::Helpers::DateHelper]

日付と時刻用の select タグを作ります。 使い方は date_select と同じです。

Last modified:2005/03/04 01:56:19
Keyword(s):
References:[FrontPage]