#ruby-on-rails #ruby #ruby-on-rails-4
#ruby-on-rails #ruby #ruby-on-rails-4
Вопрос:
У меня есть блог с root root 'posts#index'
И лучше всего работает с example.com/
to example.com/posts
Но я хочу что-то вроде этого:
example.com/blog/posts/1
.
Я попытался создать блог Controller
и добавить
resources :blog do
resources :posts
end
Но это делает мои маршруты к blog/:id/posts/:id
Комментарии:
1. есть ли у вас связь между блогом и публикациями?
2. Нет. я начал создавать из posts controller и model. затем я просто создал контроллер блога, чтобы сделать это
example.com/blog/post
, но не могу этого сделать
Ответ №1:
Если у вас нет связи между post
и blog
, как вы упомянули, rails дает вам свободу объявлять маршруты как наши собственные.
итак, чтобы создать маршрут example.com/posts/1
к, example.com/blog/posts/1
просто добавьте пользовательский маршрут в конце.
get '/blog/posts/:id', to: :show, controller: 'posts'
что это делает, так это повторяет предыдущий маршрут и делает этот маршрут конечным.
Теперь введите rake routes, и он предоставит вам последний маршрут в виде,
GET /blog/posts/:id(.:format) posts#show
Теперь вы можете получить доступ с помощью,
example.com/blog/posts/1
Комментарии:
1. Да! но это слишком сложно. Но я нашел приведенный ниже
42linoge's
ответ немного простым.
Ответ №2:
Просто чтобы расширить ответ @ Sravan. Если у вас есть несколько маршрутов, которые будут начинаться с /blog /, возможно, вы захотите проверить руководство Rails по маршрутизации.
Вы можете добавить что-то вроде
scope '/blog' do
resources :posts
resources :users
resources :images
end
Которое создаст соответствующие маршруты в / blog / .
Ответ №3:
namespace :blog do
resources :posts
resources :users
resources :images
end
И ваш контроллер с пространством имен будет выглядеть следующим образом: Blog::PostsController