ruby-on-rails - routes rails examples
Rutas, ayudantes de ruta y STI en Rails 4.0 (2)
¡Esto me está volviendo loca! Tengo los dos modelos Lion y Cheetah . Ambos heredan de Wildcat .
class Wildcat < ActiveRecord::Base; end
class Lion < Wildcat; end
class Cheetah < Wildcat; end
STI se usa aquí.
Todos se manejan a través del controlador WildcatsController . Allí, tengo un before_filer para obtener el type de wildcat de los params[:type] y todas las demás cosas para usar la clase correcta.
En mi routes.rb , creé las siguientes rutas:
resources :lions, controller: ''wildcats'', type: ''Lion''
resources :cheetahs, controller: ''wildcats'', type: ''Cheetah''
Si ahora quiero usar los helpers de rutas, que obtengo de las rutas ( lions_path , lion_path , new_lion_path , etc.), todo está funcionando como se esperaba, excepto el show y las new rutas. Por ejemplo, lions_path devuelve el camino /lions . La new ruta devuelve /lions/new?type=Lion . Lo mismo con la ruta del show . Cuando trato de ingresar /lions/new a mi dominio raíz, agrega correctamente el tipo param en el fondo.
Entonces, mi pregunta es, ¿por qué Rails agrega el parámetro type a la url si uso el helper path? ¿Y por qué solo para new y show ?
Estoy ejecutando Rails 4.0.0 con Ruby 2.0 usando una nueva aplicación de Rails.
¿Por qué usar el type ? ¿Por qué no usar controladores heredados?
resources :lions
resources :cheetahs
Entonces
class LionsController < WildCatsController
end
class CheetahController < WildCatsController
end
class WildCatsController < ApplicationController
before_filter :get_type
def index
@objs = @klass.scoped
end
def show
@obj = @klass.find(params[:id])
end
def new
@obj = @klass.new
end
# blah blah
def get_type
resource = request.path.split(''/'')[0]
@klass = resource.singularize.capitalize.constantize
end
acabo de tener este problema. Podría intentar apagar el servidor, eliminar el directorio / tmp y reiniciar.