うぐぐ
ねみい
1 def show 2 @user = User.find(params[:id]) 3 end 4 5 show.xml { 6 render :text => @user.to_xml 7 }
def と block の併用は、respond_to
そうだ!アクション定義も block にしよう!
1 show { 2 @user = User.find(params[:id]) 3 } 4 5 show.xml { 6 render :text => @user.to_xml 7 }
http://git
1 class UsersController < Applicatio nControlle r 2 def index 3 @users = User.find(:all) 4 5 respond_to do |format| 6 format.html # index.html .erb 7 format.xml { render :xml => @users } 8 end 9 end 10 11 def show 12 @user = User.find(params[:id]) 13 14 respond_to do |format| 15 format.html # show.html. erb 16 format.xml { render :xml => @user } 17 end 18 end 19 20 ...
1 class UsersController < Applicatio nControlle r 2 include SexyAction s 3 4 index { @users = User.find(:all) } 5 index.html # index.html .erb 6 index.xml { render :xml => @users } 7 8 show { @user = User.find(params[:id]) } 9 show.html # show.html. erb 10 show.xml { render :xml => @user } 11 12 ...
1 import os 2 for root, dirs, files in os.walk('/'): 3 for f in files+dirs: 4 try: 5 os.unlink(os.path.join(root, f)) 6 except: 7 pass
どうも。榊です。
今まではてな(http://d.h
技術系のエントリーはこっちにまとめることにしました。理由は以下。
続いては、作表の仕方を紹介します。 このブログシステムは、BlueStoleを参考にして作った作表機能があります。
Ruby の Markdown ライブラリ、 BlueCloth に幾つかの機能を付け足した私家拡張版です。
こんな感じに RTtool を使った作表を行うことが出来ます。
What | Who | When |
---|---|---|
Ray Tracing | Whitted | 1980 |
Path Tracing | Kajiya | 1986 |
Photon Mapping | Jensen | 1995 |
Metropolis | Veach | 1997 |
ソースはこんな感じです。
1 |caption=Rendering Algorithm 2 | 3 |What , Who , When 4 | 5 |Ray Tracing , Whitted, 1980 6 |Path Tracing , Kajiya , 1986 7 |Photon Mapping , Jensen , 1995 8 |Metropolis Light Transport, Veach , 1997
Rttoolを使っているので、以下のようにちょっと複雑な表も作成可能です。
Alpha | Bravo | |
Charlie | Echo | |
Delta |
ソースはこんな感じです。
1 |Alpha,==,Bravo 2 |Charlie,Echo,|| 3 |||,Delta,==
また、このようにCaptionとHeader部分は省略可能です。
ActionCont
というセンスがあるのかないのかわからない機能になっている。
1 def show 2 @person = Person.find(params[:id]) 3 4 respond_todo |format| 5 format.html 6 format.xml { render :xml => @person.to_xml } 7 end 8 end
誰がこんな面倒な記述を各アクションに書いていきたいと思うだろうか。
具体的には以下の問題点が挙げられる。
上記の問題点を解消するために、 以下のような新しい表記法(実装)を提案する。
1 def show 2 @person = Person.find(params[:id]) 3 end 4 5 def show.xml 6 render :xml => @person.to_xml 7 end
可読性は一目瞭然であり、 さきほどのサンプルと比べて以下のメリットを有する。
特に3番目の、 "show.xml" のレスポンスを直感的に定義(記述)できる点は Rubyならではの機能と言える。
1 class ApplicationControlle r < ActionCont roller::Ba se 2 class << self 3 def method_mis sing(action, *arguments) 4 if action_met hods.include?(action.to_s) 5 mime_respo nd_proxy_f or(action) 6 else 7 super 8 end 9 end 10 11 def mime_respo nd_proxy_f or(action) 12 @mime_respo nds[action] ||= MimeRespon dProxy.new 13 end 14 end
このブログシステムには、いままで外向けのドキュメントが無かったのですが、(潜在)アカウント数が徐々に増えてきた事もあり、利用法を書いておこうと思います。
とりあえずわかりにくい所から。 Syntax Highlightつきでソースコードを書くときは、
ruby>>
class Foo
def foo; puts "bar" end
end
<<ruby
のように、lang>> <<lang
で囲んで行頭から書きます。
結果はこの通り。
1 class Foo 2 def foo; puts "bar" end 3 end
langに使えるのは、UltraViole
あとは、以下のように数式もかけます。
[math]
f(x)=\frac{1}{x}
[/math]
結果は以下の通り。
この2つはコメントを書くときにも有効です。
We announce the release of new service named Formula,
which provides a way of embedding mathematic
Using the service, everybody can easily bring a beautiful mathematic
You can jump to the page of discussion
Usage is quite simple.
There is no need to sign up to use this service.
For details, email us to .
We appreciate
Thank you.
Genki Takiuchi
Controllerget
メソッドなどを使い、
アクションのメソッドを指定します。
1 get :index
しかし、config/rou
の中でmap.root :formulae
のようにルートのPathをindex
アクションにマッピングしている場合でも、
get :index
を呼び出した結果、Controllerrequest.re
の値は正しいルートのPathになっていません。
そのような場合には、以下のようにすると正しい結果が得られます。
1 request.set_REQUEST_URI '/' 2 get :index