[前][次][番号順一覧][スレッド一覧]

rails:2596

From: Shin Morichika <ofl@c...>
Date: Sat, 29 Mar 2008 10:22:30 +0900
Subject: [rails:2596] Re: ネストされたリソースのルーティング

Rails 2.0.2ですが最近同じようなことで格闘していたので、参考まで 
に。
自分でもいろいろな情報をあたりながら試行錯誤したもので、これが
正しいやり方なのかは確信はありませんが。

routes.rbは

> map.rosources :folders do |folder|
>   folder.resources :folders
> end
...
   map.connect ':controller/:action/:id'
   map.connect ':controller/:action/:id.:format'

でこちらの環境では
GET    /folders                                    
{:action=>"index", :controller=>"folders"}
POST   /folders                                    
{:action=>"create", :controller=>"folders"}
GET    /folders/new                                
{:action=>"new", :controller=>"folders"}
...
...
GET    /folders/:folder_id/folders                     
{:action=>"index", :controller=>"folders"}
POST   /folders/:folder_id/folders                     
{:action=>"create", :controller=>"folders"}
GET    /folders/:folder_id/folders/new                 
{:action=>"new", :controller=>"folders"}
GET    /folders/:folder_id/folders/:id/edit            
{:action=>"edit", :controller=>"folders"}
...
...
などのようにルーティングをしてくれています。

acts_as_treeは使っていないのでfolder.rbは

class Folder < ActiveRecord::Base

has_many :sub_folders, :class_name=> 'Folder', :foreign_key =>  
'parent_id'
belongs_to :parent, :class_name => 'Folder', :foreign_key => 'parent_id'
...
としています。そしてコントローラーは

   def index
     if params[:folder_id]
       @folders = Folder.find(:conditions =>  [parent_id = ?',params 
[:folder_id]])
     else
       @folders = Folder.find(:all)
     end
   end

   def new
     @folder = folder.new
     @folder.parent_id = params[:folder_id] if params[:folder_id]
...
...
というようにして一応望んでいる結果を得られています。




-- 
森近 真
uy4s-mrck@a...



--
ML: rails@r...
使い方: http://QuickML.com/

[前][次][番号順一覧][スレッド一覧]

      2593 2008-03-27 06:19 [gauss8000@y...      ] ネストされたリソースのルーティング      
->    2596 2008-03-29 02:22 ┗[ofl@c...            ]                                       
      2598 2008-04-01 05:13  ┗[gauss8000@y...      ]