У меня проблема с удалением достижения для пользователя
При попытке удаления achievement для user, я вместо удаления перехожу на страницу achievement show но я просто хочу стереть запись achievement
Моя view
<strong>Achievements:</strong>
<% @user.achievements.each do |achievement| %>
<p>
<%=link_to achievement.title, user_achievement_path(@user, achievement)%>
<%=link_to "Delete", user_achievement_path(@user, achievement), :confirm => "Are you sure?", method: :delete%>
</p>
<% end %>
Модели
class User < ApplicationRecord
has_many :achievements
devise :database_authenticatable, :registerable,
:recoverable, :rememberable, :validatable
end
class Achievement < ApplicationRecord
belongs_to :user
end
Контролер Achievement
class AchievementsController < ApplicationController
def create
@user = User.find(params[:user_id])
@achievement = @user.achievements.create(achievement_params)
redirect_to user_path(@user)
end
def show
@achievement = Achievement.find(params[:id])
end
def destroy
@achievement = Achievement.find(params[:id])
@achievement.destroy
redirect_to myprofile_path
end
private
def achievement_params
params.require(:achievement).permit(:title, :description)
end
end
myprofile_path это страница зарегистрированного пользователя.
Я действительно новичок в rails
Ответы (1 шт):
Автор решения: Vladyslav Kutsak
→ Ссылка
Убрал с index achievements
<%=link_to "Delete", user_achievement_path(@user, achievement), :confirm => "Are you sure?", method: :delete%>
и добавил на show achivements
<% if user_signed_in? && @achievement.user == current_user%>
<%= button_to "Destroy this achievement", @achievement, method: :delete, class: 'btn btn-outline-danger'%>
<% end %>
и тогда заработало