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

Rails' Wiki - ActionViewHelper Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

! テンプレート用 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 と同じです。