tutorial - Rutas con Dash `-` En lugar de Subrayar`_` en Ruby on Rails
ruby on rails tutorial español (4)
Con Rails 3 y posterior puedes hacer esto:
resources :user_bundles, :path => ''/user-bundles''
Otra opción es modificar Rails, a través de un inicializador. No lo recomiendo, ya que puede romperse en versiones futuras.
Usar :path
como se muestra arriba es mejor.
# Using private APIs is not recommended and may break in future Rails versions.
# https://github.com/rails/rails/blob/4-1-stable/actionpack/lib/action_dispatch/routing/mapper.rb#L1012
#
# config/initializers/adjust-route-paths.rb
module ActionDispatch
module Routing
class Mapper
module Resources
class Resource
def path
@path.dasherize
end
end
end
end
end
end
Quiero que mis direcciones URL utilicen el guión -
lugar del subrayado, como separadores de palabras. Por ejemplo, controller/my-action
lugar de controller/my_action
.
Estoy sorprendido de dos cosas:
- Google et al. continuar a distinguirlos.
- Que Ruby on Rails no tiene un parámetro de configuración global simple para asignar a
_
en el enrutamiento. O lo hace?
La mejor solución que tengo es usar :as
o una ruta con nombre.
Mi idea es modificar el enrutamiento de Rails para verificar esa configuración global y cambiar a _
antes de enviar a una acción del controlador.
¿Hay una mejor manera?
Puede sobrecargar nombres de controlador y acción para usar guiones:
# config/routes.rb
resources :my_resources, path: ''my-resources'' do
collection do
get ''my-method'', to: :my_method
end
end
Puedes probar en la consola:
rails routes -g my_resources
my_method_my_resources GET /my-resources/my-method(.:format) my_resources#my_method
Puede usar rutas con nombre. Permitirá usar ''-'' como separadores de palabras. En routes.rb,
map.name_of_route ''a-b-c'', :controller => ''my_controller'', :action => "my_action"
Ahora las URL como http://my_application/a-b-c irían al controlador y a la acción especificados.
Además, para crear URL dinámicas
map.name_of_route ''id1-:id2-:id3'', :controller => ''my_controller'', :action => "my_action"
en este caso, ''id1, id2 e id2 se pasarán como parámetros http a la acción
En tus acciones y puntos de vista,
name_of_route_url(:id1=>val1, :id2=>val2, :id3=>val3)
evaluaría a la URL '' http://my_application/val1-val2-val3 ''.
si usa guiones bajos en un controlador y ve el archivo, solo use guiones en su archivo de rutas, y funcionará ...
obtener ''blog / example-text'' esta es mi ruta para este controlador
def example_text end <- este es mi controlador
y example_text.html.erb es el archivo
y este es el enlace real site.com/blog/example-text
pensé que esto es correcto para mí, y es más efectivo que el SEO