У меня проблема с удалением достижения для пользователя

При попытке удаления 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 %>

и тогда заработало

→ Ссылка