Понимание Rails единственного и множественного числа путей - PullRequest
0 голосов
/ 29 мая 2019

Я очень новичок в использовании Rails и в данный момент создаю клон Instagram как проект, который поможет мне немного лучше понять Rails. Я следую этому очень полезному руководству о том, как реализовать функцию лайков / лайков:

https://medium.com/full-taxx/how-to-add-likes-to-posts-in-rails-e81430101bc2

Однако я не совсем понимаю пути Rails - пожалуйста, кто-нибудь может объяснить разницу между:

post_like_path и post_likes_path, как указано в руководстве. Я не понимаю, почему кто-то любит, а кто-то любит? :(

На самом деле пытаюсь обдумать это, поэтому был бы очень благодарен за любое понимание!

Спасибо :)

Ответы [ 4 ]

0 голосов
/ 29 мая 2019

Я бы посоветовал всегда запускать эту команду из терминала:

rake routes

Или только для LikesController:

rake routes -c likes

Показывает все маршруты, связанные с лайк-контроллерами . Это результат, он говорит о многом. Вы можете видеть, где используется множественное число и единственное число.

#         Prefix Verb   URI Pattern                              Controller#Action
#     post_likes GET    /posts/:post_id/likes(.:format)          likes#index
#                POST   /posts/:post_id/likes(.:format)          likes#create
#  new_post_like GET    /posts/:post_id/likes/new(.:format)      likes#new
# edit_post_like GET    /posts/:post_id/likes/:id/edit(.:format) likes#edit
#      post_like GET    /posts/:post_id/likes/:id(.:format)      likes#show
#                PATCH  /posts/:post_id/likes/:id(.:format)      likes#update
#                PUT    /posts/:post_id/likes/:id(.:format)      likes#update
#                DELETE /posts/:post_id/likes/:id(.:format)      likes#destroy

В первом столбце показан путь, во втором - шаблон (с необходимыми параметрами), а в третьем - контроллер с действием (относится к представлению).

Так, например, взять

# new_post_like GET    /posts/:post_id/likes/new(.:format)      likes#new

Это говорит о том, что форму для нового лайка можно разместить на странице, связанной по этому URL: new_post_like_path(post_id: @post) обратите внимание на требуемый параметр. Страница views/likes/new.html.erb. контроллер - LikesController, а действие - def new; end, где вам нужно создать экземпляр объектов, которые будут использоваться на этой странице: @like = Like.new и @post = Post.find(params[:post_id]).

Форма затем отправляется действием POST, поэтому строка для проверки выглядит следующим образом:

# post_likes POST   /posts/:post_id/likes(.:format)          likes#create

Как и раньше, страница, на которой расположена форма, - views/likes/new.html.erb, URL для отправки формы - post_likes_path(post.id). Действие POST при отправке формы обрабатывается контроллером LikesController, а действие def create; end

Другой пример:

# post_like GET    /posts/:post_id/likes/:id(.:format)      likes#show

Это говорит о том, что для показа Like объекта с определенным id, вам необходимо посетить этот link_to: post_like_path(post.id, like.id), контроллер - LikesController, действие - def show; end и вид в views/likes/show.html.erb.

и тд ..

0 голосов
/ 29 мая 2019

post_like_path используется для отображения страницы, обновления и уничтожения пути. Post_likes_path даст вам путь к индексу и создаст действия.

Эта ссылка является руководством по ROR и содержит довольно простое объяснение:

https://guides.rubyonrails.org/routing.html#specifying-a-controller-to-use

0 голосов
/ 29 мая 2019

В Rails согласно REST -

  1. Если вы пытаетесь сослаться на один ресурс, используйте post_like_path.

  2. При попыткечтобы ссылаться на набор ресурсов, используйте post_likes_path

Если вы хотите show или delete определенного ресурса, вам нужно будет предоставить :id дляресурс, так что целевой ресурс может быть найден.

[/ posts / 1 / likes / 1] - здесь упоминается одна запись «like».

Хотя в случае всехПуть множественного числа записей формируется для ссылки на все подобные записи -

[/ posts / 1 / likes] - Здесь упоминаются все записи «like».

0 голосов
/ 29 мая 2019

пост-модель может иметь несколько лайков. Но когда мы отменим, как это будет единственно правильным. поэтому post_like_path будет обрабатывать единичное подобное и будет запускать действие «удалить» в контроллере

post_likes_path запустит новое действие для создания нового лайка.

Пожалуйста, направьте ресурсы концепцию, тогда вы узнаете больше об этом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...