A RoR начинающий здесь. Я пытаюсь реализовать страницу «Мои продукты», чтобы показать все продукты, добавленные текущим пользователем. В настоящее время я установил страницу «Все продукты» в качестве моего индекса root «product # index». Мой продукт имеет контроллер, но мой Пользователь не является контроллером, потому что я использую Devise. У меня есть несколько вопросов, которые я все еще не мог понять.Ruby Rails Path Показать все товары от пользователя
Поскольку в настоящее время
Продукт
belongs_to :user
Пользователь
has_many :products
маршруты
devise_for :users
resources :products
рейк маршруты У меня есть
new_user_session GET /users/sign_in(.:format) devise/sessions#new
user_session POST /users/sign_in(.:format) devise/sessions#create
destroy_user_session DELETE /users/sign_out(.:format) devise/sessions#destroy
user_password POST /users/password(.:format) devise/passwords#create
new_user_password GET /users/password/new(.:format) devise/passwords#new
edit_user_password GET /users/password/edit(.:format) devise/passwords#edit
PATCH /users/password(.:format) devise/passwords#update
PUT /users/password(.:format) devise/passwords#update
cancel_user_registration GET /users/cancel(.:format) devise/registrations#cancel
user_registration POST /users(.:format) devise/registrations#create
new_user_registration GET /users/sign_up(.:format) devise/registrations#new edit_user_registration GET /users/edit(.:format) devise/registrations#edit
PATCH /users(.:format) devise/registrations#update
PUT /users(.:format) devise/registrations#update
DELETE /users(.:format) devise/registrations#destroy
products GET /products(.:format) products#index
POST /products(.:format) products#create
new_product GET /products/new(.:format) products#new
edit_product GET /products/:id/edit(.:format) products#edit
product GET /products/:id(.:format) products#show
PATCH /products/:id(.:format) products#update
PUT /products/:id(.:format) products#update
DELETE /products/:id(.:format) products#destroy
В настоящее время, что я имею в виду для достижения этой цели:
Создать UserController иметь @user = User.all то, потому что с объединением я могу использовать @ user.product. (Я видел, как некоторые люди говорили, что я не должен создавать новый контроллер из-за Devise?) Однако я попытался протестировать консоль rails перед выполнением этой реализации.
product = Product.first
product.user #here I get all details about user
user = User.first
user.product #here I get error. Why it works for product to find user but not both ways?
Далее, это то заставляет меня задаться вопросом, как создать настроить маршрут, чтобы получить путь/пользователей /: ID/продукты. Должен ли я использовать вложенный ресурс?
Следующий вопрос, я пытался иметь
resources :users do
resources :products
end
resources :products
я снова набрал в реках маршрутах. Я смущен
user_products GET /users/:user_id/products(.:format) products#index
products GET /products(.:format) products#index
Вопрос:
- Can 2 путь имеет тот же контроллер # Action?
- user_products_path и products_path - это 2 разных пути, где user_products_path представляет пользовательский продукт. и products_path представляет собой все продукты
Извините за длинный пост. Я действительно хочу прояснить эти вещи. Большое спасибо, если вы могли бы помочь! :)
попробовать user.products – djrock