Похоже, вы хотите вложенные маршруты. Попробуйте это ваш config / rout.rb
resources :posts
resources :users do
resources :posts
end
Это имеет больше информации. Вы также можете использовать методы глагола match
или post
и get
по отдельности. Есть также много вариантов для вложенных маршрутов. https://guides.rubyonrails.org/routing.html.
АЛЬТЕРНАТИВНО
в config / rout.rb:
get 'users/:id/posts', to: 'users#posts'
и в controllers / users_controller.rb
before_action :set_user, only: [:users_posts, :show, :edit, :update, :destroy]
...
def posts
@posts = @user.posts
end
Со вторым вариантом вы можете KISS, сохранив POST / PATCH / UPDATE / DESTROY в их родном доме, например / posts и / posts / 42. Просто обработайте: user_id как переменную формы в этом случае с любой дополнительной проверкой, которая вам может понадобиться, возможно, ссылаясь на переменную сеанса.
LASTLY
Вы можете фактически поместить это в свою конфигурацию / маршруты. гь. Но теперь вы, вероятно, пишете новые формы, потому что: user_id - это параметр маршрута. Я бы подал это под дополнительной сложностью. Возможно, это соответствует вашей ситуации.
post 'users/:id/posts', to: 'users#posts_create'