I am trying to use routes with default params to have routes
‘/mycompany/departments’
and
‘/companies/1/departments’
mean the same thing (both restful routes).
When I set up the files as below, I get an error of
‘Couldn’t find Company without an ID’
and my log file shows the following …
Processing DepartmentsController#index (for 127.0.0.1 at 2006-08-14
14:00:34) [GET]
Session ID: d88710b06b66529459bc8c9c625109fc
Parameters: {“action”=>“index”, “controller”=>“departments”}
How can I use restful routes with default parameters?
***** routes.rb *******
ActionController::Routing::Routes.draw do |map|
map.resources :departments, :path_prefix => ‘mycompany’,:company_id => 1
map.resources :companies do |companies|
companies.resources :departments do |departments|
departments.resources :departments, :name_prefix => ‘child_’
end
end
Install the default route as the lowest priority.
map.home ‘’, :controller => ‘companies’,:action => ‘index’
map.connect ‘:controller/:action/:id’, :id => nil, :action => ‘index’
end
in application.rb, I have
class ApplicationController < ActionController::Base
protected
def find_company
@company = Company.find(params[:company_id])
end
end
And in departments_controller.rb
class DepartmentsControler < ActionController::Base
before_filter :find_company
end
In companies_controller.rb
I have
class CompaniesController < ActionController::Base
protected
def find_company
@company = Company.find(params[:id])
end
end