Я бы посоветовал всегда запускать эту команду из терминала:
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
.
и тд ..