2008年5月21日水曜日

text_field


テキストボックスを作成する。

$lt;%= text_field 'text','field' %>

以下イメージ。
<input id="text_field" name="text[field]" size="30" type="text" />

options として、INPUT の属性を指定可能。


:autocomplete=>on|off      # オートコンプリートの設定

:style=>"color:red;" # style の指定

:maxlength=>n # 最大文字数

など。

2008年5月20日火曜日

check_box

チェックボックスには2種類ある。



  • 未選択状態も送信可能

  • 選択状態のみ送信



未選択状態も送信可能タイプの場合、

<%= check_box 'check','box' %>

を利用する。

出力結果。
<input id="search_kind_id" name="check_box" type="checkbox" value="1" />

<input name="check_box" type="hidden" value="0" />

送信結果。
params[:check][:box]
>> "1" # 選択時

params[:check][:box]
>> "0" # 未選択時

注目すべきは hidden 項目の存在。name が同一の hidden 項目が勝手に作成される。

こやつが未選択時に送信されるのかぁ。なるほど~



選択状態のみ送信タイプの場合、

<%= check_box_tag 'check','box' %>

出力結果。
<input id="check_box" name="check_box" type="checkbox" value="1" />

送信結果。
params[:check][:box]
>> "1" # 選択時

params[:check][:box]
>> nil # 未選択時

普通の HTML の動き。





checkbox を複数選択するシチュエーションは少なくない。

checkbox を配列化する場合は、check_box_tag を利用する。(check_box タグも配列化できないわけではないが、しても意味がないため)

<%= check_box_tag 'check','box[]',@model.id %>

出力結果。
<-- value=1,2 を出力した例 -->
<input id="check_box" name="check_box[]" type="checkbox" value="1" />
<input id="search_kind_id" name="check_box[]" type="checkbox" value="2" />

送信結果。
params[:check][:box]
>> ["1","2"] # 複数選択時

params[:check][:box]
>> ["1"] # 1のみ選択時

params[:check][:box]
>> [] # 未選択時



ちなみに、check_box を配列化するには、

<%= check_box 'check','box',{:name=>"check[box][]"},@model.id %>

と、出力する name を無理やり指定してやれば可能。

ただし、出力結果は、
<input id="check_box" name="check[box][]" type="checkbox" value="1" />

<input name="check[box][]" type="hidden" value="0" />

となり、
params[:check][:box]
>> ["1","0"] # 選択時

params[:check][:box]
>> ["0"] # 未選択時

と、常に未選択状態が送信される状況になってしまう。

2008年5月16日金曜日

fixture の設定


デフォルトでは、利用しない形式になっているので
設定をする必要がある。


/test/test_helper.rb
self.use_instantiated_fixtures  = true   # ここを true にする



これで units and functionals ともに利用可能になる。


rake db:migrate で development 環境へ作成したテーブル類から
test 環境へ clone を作成する。
$ rake db:test:clone_structure



2.0 からなのか、YAML の変数名が数値のみの場合、エラーとなる。
(1.2 のときは確実に作成できてたけどなぁ)


YAML の定義
001:
title: title001.
text: text001.

テストコード
fixtures :contents
def test_001
assert_equal "title001.",contents('001').title
end

結果
NameError: `@1' is not allowed as an instance variable name



変数名を文字列として扱えば、ちゃんと動作する。(n001: など)
なんでだろ???

2008年5月15日木曜日

google-code-prettify の導入

いろんなソースコードを記載していくつもりなので、
シンタックスハイライトしたくて
google-code-prettify
を入れてみた。

def index
render_to 'index'
end



1,400×1,200 だと、色がついているのかわからん。。。orz

2008年5月13日火曜日

ブログ開始

今日からまた、ブログを始めます。

ブログを立ち上げた回数は数回、

ブログを書き込んだ回数も TOTAL して数回。

今度は続くかなぁ