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
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! :)
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.