Dominic Sisneros
2006-Aug-14 20:24 UTC
[Rails] Rest, routes, path_prefix and default params
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
-------------- next part --------------
An HTML attachment was scrubbed...
URL:
http://wrath.rubyonrails.org/pipermail/rails/attachments/20060814/5db732bd/attachment.html
On 8/14/06, Dominic Sisneros <dsisnero@gmail.com> wrote:> 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 > _______________________________________________ > Rails mailing list > Rails@lists.rubyonrails.org > http://lists.rubyonrails.org/mailman/listinfo/rails > > >Dominic, From looking at the source, it doesn''t appear that map.resources supports default parameters. -- Zack Chandler http://depixelate.com