人気ブログランキング | 話題のタグを見る

RoR scaffold のアクション

Ruby on Rails ではアプリケーションのアクションを呼び出すのに URL を使う。例えば、users コントローラの foo というアクションを引数1で呼び出すのには、ブラウザで http://localhost:3000/users/foo/1 にアクセスすると良い。

ということは、scaffold で作られたアプリケーションを操作するための情報は、表示されたページのリンクの上にカーソルをおいて、ステータスバーでそのリンクのURLを読み取れば良い。数字が出てくる場合は、モデルの id の番号のようだ。これを変えてURLをリクエストするとその仕組みがわかる。

また、users_controller.rb のソースについているコメントの# GET /usrs/1 はまさにそのURLが書いてある。たとえば下の例の場合、http://localhost:3000/users/1 にアクセスすると id = 1 のモデルの情報がHTMLで表示されるが、http://localhost:3000/users/1.xml にアクセスするとそれが XML で送られてくる。

  # GET /users/1
  # GET /users/1.xml
  def show
    @user = User.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.xml { render :xml => @user }
    end
  end

モデルの id は、scaffold で自動的に割り振られる。db/development.splite3 に sqlite3 でアクセスして、.schema でスキーマを表示させると分かる。その他にも scaffold はタイムスタンプも自動的に作成するようだ。行儀のいいテーブルを自動的に作成してくれるのでテーブルを定義するときは scaffold を利用したほうがいいかもしれない。

さいわい、scaffold で作成されたファイルの内容が単純なので、controller と view のファイルの中身を調べてみれば、アプリケーションを作るときの参考になるかもしれない。

もちろん、http://localhost:3000/ からマニュアルなどの情報を調べる必要はあるが、そのまえに、どんな仕組みで動いているのかを少し調べておくと便利なのではないだろうか。
by tnomura9 | 2008-10-14 07:24 | Ruby | Comments(0)
<< RoR Rakefile RoR scaffold まとめ >>