Я пытаюсь создать форму для подобной кнопки. Подобная модель является полиморфной для разных типов моделей (комментарии/сообщения/и т. Д.) И принадлежит определенному пользователю.Создание формы для аналогичной кнопки в полиморфных отношениях в Rails
Когда этот пользователь просматривает элемент блога, например, я хочу показать подобную кнопку под сообщением. Я мои маршруты настройки таким образом, что подобные маршруты всегда вложен внутри полиморфного объекта, для которой они предназначаются:
Таким образом, для должностей, например:
#routes.rb
resources :posts do
resources :likes, only: [:create, :destroy]
end
Так пост ссылка будет Посмотреть/posts /: post_id/likes/(метод: Post)
В контроллере я создаю новый объект Like, назначаю его пользователю и сохраняю его. Это прекрасно работает.
Проблема возникает, когда я пытаюсь создать форму для удаления. Я действительно не знаю, как это создать, я знаю, что ссылка должна быть/posts /: post_id/like /: id (метод: Delete), но при ее настройке это приводит к ошибке
Я думаю, что форма могла также нужно реорганизовать, но я не знаю, как создавать формы для этих «сложных» отношений.
#shared/_like_button.html.haml
- if not @post.is_liked_by current_user
= form_for(@post.likes.build, url: post_likes_path(@post)) do |f|
= f.submit
- else
= form_for(@post.likes.find_by(user_id: current_user.id), url: post_like_path(@post), html: {method: :delete}) do |f|
= f.submit
EDIT:
Я думаю, что главная проблема заключается в том, что post_like_path (@post) doens't получить визуализации правильно, потому что я не знаю о: ид тому подобное. Поэтому я пытаюсь создать ссылку на ActionController :: UrlGenerationError в PostsController # при попытке создать ссылку.
Можете ли вы отправить сообщение об ошибке? – RichardAE
Спасибо, ответ Сандера был тем, что я искал! –