2010-11-02 17 views
10

¿Cómo se puede utilizar el guión en las URL de recursos? Por ejemplo: /my-model/ o /my-model/1. Si defino ruta como resources :"my-model" obtengo un error de sintaxis porque los carriles generan el método def hash_for_my-models_url(options = nil).recursos de guiones en rieles 3 rutas

+0

posible duplicado de [En el enrutamiento de Ruby on Rails Me gustaría utilizar Dash \ '- \' En lugar de Subrayar \ '\ _ \'] (http://stackoverflow.com/questions/5334465/in-ruby- on-rails-routing-i-would-like-to-use-dash-instead-of-underscore) –

Respuesta

14

que he encontrado la solución :

resources "my-models", :as => :my_models, :controller => :my_models 

ACTUALIZACIÓN: Como dijo Timo Saloranta en comentario, funciona sin :controller => :my_models en las últimas versiones de Rails 3.

+1

Creo que esto también funciona (la diferencia estaría en el nombre de los ayudantes de ruta): 'resources: product_types,: path => '/ product-types'' – sandstrom

+3

Funciona sin el ** controlador * * parte con las últimas versiones de Rails 3. –

0

¿Has probado con una ruta personalizada?

map.connect "/my-model/:id", :controller => 'my-model-controller', :action => 'read' 

Esto invocaría el método 'leer' de 'my-model-controller.rb'.

+0

Sí, es una solución obvia pero es interesante cómo es posible definir rutas de guiones utilizando recursos. –

2

Puede utilizar la opción :as para configurar rutas ingeniosos con direcciones URL con guión:

map.resources :my_model, :as => "my-model" 

resultados en

my_model_index GET /my-model(.:format) {:action=>"index", 
    :controller=>"my_model"} 

... etc ...

+0

Ya he tred para hacer esto. Obtengo el mismo error que cuando uso el modelo con nombre de guión. –

+0

¿Incluso cuando usa una cadena entre comillas en lugar de un símbolo? – zetetic

+0

Sí ... Fue lo primero que agradezco ... –

Cuestiones relacionadas