web-dev-qa-db-fra.com

Comment changer le nom d'un itinéraire Rails 4

J'ai modifié le routage de posts#index pour qu'il corresponde à blog et je reçois maintenant /blog dans l'URL que j'essayais d'accomplir. 

J'ai essayé plusieurs choses différentes pour obtenir mon article de blog actuel. L'itinéraire ressemble actuellement à quelque chose comme /posts/this-is-a-test et d'utiliser également blog plutôt que posts dans l'URL.
Ci-dessous se trouve mon fichier route actuel. J'utilise la gemme friendly_id, si cela fait une différence dans la réponse à cette question. 

resources :posts do
  resources :comments
end

  resources :contacts, only: [:new, :create]

  root "pages#home"

  get "/home", to: "pages#home", as: "home"
  get "about" => 'pages#about'
  get "pricing" => 'pages#pricing'
  get "contact_us" => 'pages#contact_us'
  match 'blog', to: 'posts#index', via: :all
end 
16
Kevin Dark

path option avec ressource doit aider. 

resources :posts, :path => 'blogs' do
  resources :comments
end

Ceci changera tous les /posts et /post en /blogs/ et /blog.

Si vous souhaitez modifier les méthodes d'assistance de votre itinéraire, telles que posts_path en blogs_path et new_post_path en new_blog_path etc., vous pouvez le modifier avec as tag. 

resources :posts, :path => 'blogs', :as => 'blogs' do
  resources :comments 
end

Ou encore mieux, vous pouvez spécifier le contrôleur et le chemin blogs directement comme suit:

resources :blogs, controller: 'posts' do
  resources :comments
end

C'est la génialité de Rails! :)

34
kiddorails
match 'blog/:id' => 'posts#show'

devrait marcher. Mais si vous voulez faire correspondre chaque méthode du contrôleur posts au blog (et que vous ne voulez pas utiliser le chemin des publications), je renommerais simplement le contrôleur en blog et ajouterait ressource: blog dans les itinéraires.

0
Giannis