Как изменить маршрут маршрута 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'
должен работать. Но если вы хотите сопоставить каждый метод в контроллере сообщений в блоге (и вы не хотите использовать путь сообщений), я бы просто переименовал контроллер в блог и добавил ресурс: блог в маршрутах.