This is driving me crazy! I have the two models Lion
and Cheetah
. Both inherit from Wildcat
.
class Wildcat < ActiveRecord::Base; end
class Lion < Wildcat; end
class Cheetah < Wildcat; end
STI is used here.
They all get handled through the controller WildcatsController
. There, I have a before_filer
to get the type
of wildcat from the params[:type]
and all the other stuff to use the correct class.
In my routes.rb
, I created the following routes:
resources :lions, controller: 'wildcats', type: 'Lion'
resources :cheetahs, controller: 'wildcats', type: 'Cheetah'
If I now want to use the path helpers, that I get from the routes (lions_path
,lion_path
,new_lion_path
, etc.), everything is working as expected, except the show
and the new
paths. For example lions_path
returns the path /lions
. The new
path returns /lions/new?type=Lion
. Same with the show
path. When I try to enter /lions/new
to my root domain it correctly adds the type param in the background.
So, my question is, why does Rails add the type
parameter to the url if I use the path helper? And why only for new
and show
?
I am running Rails 4.0.0 with Ruby 2.0 using a fresh Rails app.