2007年08月16日

Rails: 日付のバリデーション

Validates date time プラグイン
 Date,Datetimeのフォーマットチェック、範囲のチェックなどができるようです。

インストール
 
script/plugin install http://svn.viney.net.nz/things/rails/plugins/validates_date_time


モデル 記述例:README参照

validates_date :date_of_birth, :after => Date.new(1900, 1, 1), :before => Proc.new { 1.day.from_now.to_date }, :before_message => 'Ensure it is before %s', :after_message => 'Ensure it is before %s'


参考
http://i-am.web777.net/2006/12/validates_date_time.html
ラベル:Rails
posted by sistailsnow at 15:59| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

テストデータのロード

○fixtureを使ったデータベースへのデータ登録
> >fixtureにデータが記述済み
rake db:fixtures:load

productionのDBによみこますなら、
RAILS_ENV=production

を追加
posted by sistailsnow at 09:34| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年08月07日

rolerequirement

acts_as_authenticatedを利用したロール管理用のプラグインがあるようです。

http://code.google.com/p/rolerequirement/

また、使ってみようと思います。とりあずメモ。

追記:

利用方法:
CHNインターンシップぶろぐ
 http://internship-blog.chn.ac/blog/detail/22
posted by sistailsnow at 21:19| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

renderとredirect_to

renderもredirect_toも誤解を恐れずに言えば、view(rhtml)を呼び出すメソッドです。

render :action => 'hoge'

で hogeというviewを表示します。

実際には、action=> としていることからわかるように、このコントローラのアクションメソッドを実行します。

 ここで、renderとredirect_toの違いですが、

 rednerは、指定されたメソッドの中身は実行せず、すぐにview(rhtml)を表示します。

 redirect_toは、指定されたアクションメソッドを実行し、その名前のviewを表示します。

なので、次のようにすると同じ動作をします。


 redirect_to :action => 'hoge'



hoge #hogeメソッドを実行しておく
render :action => 'hoge'

#(但し、hoge内でrender,redirect_toの記述が特にない場合に限る)

posted by sistailsnow at 09:34| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年08月06日

radioボタン

radioボタンを作成する

http://railsapi.masuidrive.jp/module/ActionView::Helpers::FormTagHelper/radio_button_tag

こちらを参考にヘルパーに以下のメソッドを定義しておく

helper

def radio_select(object, method, tag_values, checkd = "true")
html = ''
for tag_value in tag_values
if tag_value[0] == checkd
html << %{<input id="#{object}_#{method}_#{tag_value[0]}" name="#{object}[#{method}]" value="#{tag_value[0]}" type="radio" checked="checked" />\n}
else
html << %{<input id="#{object}_#{method}_#{tag_value[0]}" name="#{object}[#{method}]" value="#{tag_value[0]}" type="radio" />\n}
end
html << %{<label for="#{object}_#{method}_#{tag_value[0]}">#{tag_value[1]}</label>\n}
end
return html
end

rhtml

書き方 <%= radio_select 'オブジェクト名', 'メソッド', [['値1', '表示値1'], ['値2', '表示値2'],...] %>

オブジェクト名 :obj
メソッド名 :sex

<%= radio_select 'obj', 'sex', [['male', '男性'], ['female', '女性']] %>


修正(helper)


def radio_select(object, method, tag_values, checkd = "true")
html = ''
for tag_value in tag_values
html << radio_button(object, method, tag_value[0])
html << %{\n}
end
return html
end
posted by sistailsnow at 16:27| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

options_for_select

オブジェクト obj
メソッド state

options_for_selectは
options_for_select(候補,現在の値)でoptionタグを生成する。
例えばhelperなどで候補を作成する。

rhtml

#selectタグ
<%= select_tag("obj[state]",options_for_select(states_for_select,obj.state)) %>




helper

def states_for_select
[["実行中",1],["未完了",2],["完了",3],["不要",4]]
end
ラベル:Rails
posted by sistailsnow at 14:44| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

rails: date型のselectタグ

rhtml

オブジェクト obj
メソッド date(obj.date)の場合


<%= form_tag :action=>'hoge' %>
<%= date_select(:obj, :date) %>
<%= submit_tag('hoge')
<%= end_form_tag %>

ラベル:Rails
posted by sistailsnow at 14:24| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年07月31日

Ruby講習

!Rubyの文法実習

*ハッシュ(連想配列)
hoge = { # key => value
}
hoge[key] = value

*条件分岐
if
elsif #Cとは違うので注意
else
end

*case文
case num
when 1
#num = 1
when 2,4,6
#num = 2 or 4 or 6
when 7..9
#num = 7 or 8 or 9

end

*繰り返し
**upto
**times
**each
配列.each{|var|
#var は配列の中のひとつの要素
}
**for

*メソッド
puts,gets,gets.chomp
to_i,to_f,to_s(文字列へ)

*メソッドの作り方
def plus(a,b)
return a + b (return は省略されることがある)
end

*定数
大文字で始まる変数 MAX = 10

*クラス
class Greeting #クラス名は大文字から,名詞でつける
#インスタンスメソッド
def greet #メソッド名は小文字、単語ごとに"_"で区切る、動詞でつける
end
end

**インスタンスの生成
var = Greeting.new
var.greet

attr_accessor "name" #アクセッサ
def initialze(name) #初期化処理のメソッド
@name = name #@インスタンスの中でずっと保存される
end

g = Greeting.new "hoge"

**インスタンス変数
@hoge #@から始まる変数
インスタンスごとに保持している値が違う
**アクセッサ
インスタンス変数をインスタンスの外から使えるようにするための定義

*メソッドのオーバー''ロード''

*クラスメソッド:インスタンスを生成せずに実行できるメソッド
def self.ask_name
return "あなたのネームは?"
end

*クラスの定数

*クラスの継承
class SubClass < SuperClass

*メソッドのオーバー''ライド''
親クラスで定義されているメソッドを再定義する

*組み込みクラス
**Boolean
真:true 偽:false
**シンボル Symbol
文字列だがStringとはちょっと違う
a = "foo"
b = "foo" は別のインスタンスになる(文字列)

a = :foo
b = :foo は同じインスタンスになる(Symbol)

**nil(NilClass)
空を意味するオブジェク
戻り値を返さない関数の場合
配列やハッシュで値がない要素を参照

*ブロック
do 〜 end までのプログラムをオブジェクトにしたもの(このオブジェクトを手続きオブジェクトという)
ブロックに引数を渡すこともできる
{|i| }、 do |i| end

!メモのコツ
プログラム言語の話であれば、最悪キーワードだけメモをしておけば自分で調べなおすことができる。
ラベル:ruby
posted by sistailsnow at 11:06| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

2007年07月27日

rails:バリデーション

Model
#あらかじめ用意されているバリデーションなら、フィールド名を指定してやるだけでよい

class Article < ActiveRecord::Base
validates_presence_of :title, :body #Not Null
end


Controller

def create
@article = Article.new
end

def execute
@article = params[:article] #インスタンス変数を使う。エラー時に戻るときインスタンス変数でないとエラーが表示されないため

unless @article.valid? #バリデーションチェック
   #バリデーションエラー時には戻る
return render(:action => 'create')
  
end
#以降の処理
end


View
create.rhtml


<%= form_tag( :action=> "create_article") %>
<%= error_messages_for 'article' %> #指定したオブジェクトすべてのエラー表示
<table>
<tr>
<th>タイトル</th>
<td><%= text_field('article','title') %> #入力フィールド
<br /><%= error_message_on 'article','title' %> #このフィールドに対するエラーメッセー表示
</td>
</tr>
</table>
<%= submit_tag '投稿' %>
<%= end_form_tag %>


エラーメッセージにはclass属性が指定されているので、scaffoldで作成したスタイルシートを読み込ませるなどするとそれなりの表示になる。
ラベル:Rails
posted by sistailsnow at 08:18| Comment(0) | TrackBack(0) | Railを走ってみた | このブログの読者になる | 更新情報をチェックする

2007年07月24日

FreeBSD6.2インストール

○インストール(CD-ROM)
 
Custom->Partion 全部削除して >a (自動作成
->Label >a (自動作成
->Distribution
次のものを選択
base,kernel,(dict),doc,(info),man,catman,proflibs,ports,src_sys,(local)

コミットして、
 

Configuration->ルートパスワード
Network->inteface (IPv6は使用しない)
Host:hoge ホスト名、Domain: hoge.co.jp 、Gateway: 、DNS: 、IP: それぞれ設定

 TimeZone JSTに
 Exit Install ->再起動

○SSH有効に
>vi /etc/rc.conf
sshd_enable="YES"
>/etc/rc.d/sshd start


○シェルの設定変更
>vi .cshrc
 set autolist #Tab で候補を表示できるようにする
set color
alias ls ls-F
if ($?prompt) then
set prompt="%n@%m[%~]# " #プロンプトに表示される形式を指定
...
endif

>source .cshrc #設定をロードする



#ルート用のカスタマイズ
  

>vi .cshrc
alias rm 'mv -v \!* /tmp/trashbox'
alias clean-trash '/bin/rm -vf /tmp/trashbox/*'
alias ls ls-F
set autolist
set color
if ($?prompt) then
set prompt = "%B%{\033[31m%}%m[%~]%#%{\033[m%}%b "
endif 


○FreeBSDパッチを宛てておく
>freebsd-update fetch
>freebsd-update install
再起動してバージョン確認
>reboot
>uname -a
ラベル:FreeBSD6.2
posted by sistailsnow at 16:37| Comment(0) | TrackBack(0) | やってみた | このブログの読者になる | 更新情報をチェックする

広告


この広告は60日以上更新がないブログに表示がされております。

以下のいずれかの方法で非表示にすることが可能です。

・記事の投稿、編集をおこなう
・マイブログの【設定】 > 【広告設定】 より、「60日間更新が無い場合」 の 「広告を表示しない」にチェックを入れて保存する。


×

この広告は1年以上新しい記事の投稿がないブログに表示されております。