¿Hay alguna forma de proporcionar un valor predeterminado a los helpers url/path?Enrutamiento de rieles: Dar valores predeterminados para ayudantes de ruta
que tienen un alcance opcional envolver alrededor de todos mis rutas:
#config/routes.rb
Foo::Application.routes.draw do
scope "(:current_brand)", :constraints => { :current_brand => /(foo)|(bar)/ } do
# ... all other routes go here
end
end
Quiero que los usuarios puedan acceder al sitio usando estas URL:
/foo/some-place
/bar/some-place
/some-place
Para mayor comodidad, estoy la creación de un @current_brand
en mi ApplicationController
:
# app/controllers/application_controller.rb
class ApplicationController < ActionController::Base
before_filter :set_brand
def set_brand
if params.has_key?(:current_brand)
@current_brand = Brand.find_by_slug(params[:current_brand])
else
@current_brand = Brand.find_by_slug('blah')
end
end
end
Así todo bien, pero ahora debo modificar todas las llamadas *_path
y *_url
para incluir el parámetro :current_brand
, aunque es opcional. Esto es realmente feo, IMO.
¿Hay alguna manera en que pueda hacer que los ayudantes de ruta recojan automágicamente en @current_brand
?
¿O quizás una mejor manera de definir el alcance en routes.rb
?
Gracias. Esta es la solución con la que terminé. También tenemos muchos problemas, como la necesidad de configurar esto en los anuncios publicitarios, y un truco para hacer que funcione con rspec (pegado en mi propia respuesta) – u2622
Oh, sí, lo siento por no señalar esto . Me alegra que lo hayas mencionado por completo. – CMW