Как изменить маршрут маршрута 4

Я изменил маршрутизацию posts#index в соответствии с blog, и теперь я получаю /blog в URL-адресе, который я пытался выполнить.

Я попробовал несколько разных вещей, чтобы получить мой фактический пост в блоге, который в настоящее время выглядит как /posts/this-is-a-test, а также использовать blog, а не posts в URL.
Ниже представлен мой текущий маршрут. Я использую драгоценный камень friendly_id, если это имеет какое-то значение для ответа на этот вопрос.

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 

Ответ 1

path, а также ресурс должен помочь.

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

Это изменит все /posts и /post на /blogs/ и /blog.

Если вы хотите изменить методы хелпера маршрута, такие как от posts_path до blogs_path и new_post_path до new_blog_path и т.д., вы можете изменить его с помощью as.

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

Или, что еще лучше, вы можете указать контроллер и маршрут blogs непосредственно как:

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

Это удивительность Rails!:)

Ответ 2

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

должен работать. Но если вы хотите сопоставить каждый метод в контроллере сообщений в блоге (и вы не хотите использовать путь сообщений), я бы просто переименовал контроллер в блог и добавил ресурс: блог в маршрутах.