Если я понимаю ваш вопрос, вы хотите дать ссылку на новый интерес, если у пользователя его нет, и вы хотите сделать ссылку на путь уничтожения, когда у пользователя есть интерес.
Так что вваш контроллер, вы можете использовать find_or_initialize_by
, чтобы получить интерес пользователей или инициализировать новый
@interest = @user.interests.find_or_initialize_by(hobby_id: hobby.id)
, а затем, по вашему мнению, определить, был ли ваш пользователь заинтересован, или мыинициализировал новый.Затем отобразите соответствующую ссылку
# check if `@interest` is a db record
<% if @interest.persisted? %>
<%= link_to 'Destroy', interest_path, method: :delete, class "..." %>
<% else %>
<%= link_to 'Create', new_interest_path, class "..." %>
<% end %>
РЕДАКТИРОВАТЬ:
Если вы хотите, чтобы кнопка для создания интереса одним щелчком мыши, вам нужно будет предоставить все параметры, которые вам нужны вДействие.Есть несколько способов сделать это.Вы можете сделать это несколькими способами
Использование спокойного маршрута может быть довольно многословным, поскольку у вас есть 3 уровня вложенности.используя маршрут, который выглядит как
users/:user_id/hobbies/:hobby_id/interests
Затем вы можете отправить ссылку (или построить форму) на этот маршрут
link_to user_hobby_interests_path([@user.id, hobby.id]), method: :post
или если вы хотите сохранить свой маршрут /interests
, вам нужно создать форму с необходимыми параметрами
form_for @interest do |f|
hidden_field_tag 'interest[user_id]', @user.id
hidden_field_tag 'interest[hobby_id]', hobby.id
submit_tag 'Create'
end