Question

Je veux que mes urls à utiliser dash - au lieu de _ underscore comme séparateurs de mots. Par exemple controller/my-action au lieu de controller/my_action.

Je suis surpris par deux choses:

  1. Google et al. continuer à les distinguer.
  2. que Ruby on Rails ne dispose pas d'un simple paramètre de configuration globale pour la carte - à _ dans le routage. Ou est-il?

La meilleure solution que j'ai est d'utiliser :as ou un itinéraire nommé.

Mon idée est de modifier le routage Rails pour vérifier que la configuration globale et le changement - à _ avant d'envoyer à une action du contrôleur.

Y at-il une meilleure façon?

Était-ce utile?

La solution

Avec Rails 3 et vous pouvez ensuite faire comme ceci:

resources :user_bundles, :path => '/user-bundles'

Une autre option consiste à modifier Rails, par l'intermédiaire d'un initialiseur. Je ne recommande pas bien, car il peut se casser dans les versions futures.

Utilisation :path comme indiqué ci-dessus est mieux.

# 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

Autres conseils

Vous pouvez utiliser des itinéraires nommés. Elle permettra en utilisant « - » comme mot seperators. En routes.rb,

map.name_of_route     'a-b-c',       :controller => 'my_controller', :action => "my_action"

http: //. Mon_application / a-b-c irait au contrôleur spécifié et de l'action

En outre, pour la création d'urls dynamiques

map.name_of_route    'id1-:id2-:id3',       :controller => 'my_controller', :action => "my_action"

dans ce cas « ID1, ID2 et ID2 serait passé http params à l'action

Dans vos actions et vues,

name_of_route_url(:id1=>val1, :id2=>val2, :id3=>val3) 

évaluerait à url ' http: // mon_application / val1-val2-val3 .

si vous utilisez underscores dans un fichier du contrôleur et vue puis il suffit d'utiliser des tirets dans votre fichier routes, et il fonctionnera ..

get 'blog / texte par exemple' ceci est ma route pour ce contrôleur

def example_text fin <- ceci est mon contrôleur

et example_text.html.erb est le fichier

et c'est le lien réel site.com/blog/example-text

je me suis dit que c'est fonctionne pour moi, et il est plus efficace que underscores SEO sage

Vous pouvez surcharger les contrôleurs et action à tirets d'utilisation:

# config/routes.rb
resources :my_resources, path: 'my-resources' do
  collection do
    get 'my-method', to: :my_method
  end
end

Vous pouvez tester dans la console:

rails routes -g my_resources
my_method_my_resources GET  /my-resources/my-method(.:format) my_resources#my_method
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top