Я бы хотел перенаправить на страницу показа родителя (журнала) после удаления ребенка (привычки), используя child_id.
В моем приложении пользователь может создавать журналы, которые затем имеют несколько привычек. Я хотел бы иметь возможность удалить (и отредактировать) привычку, а затем вернуться на страницу показа журнала, где отображаются все привычки.
Получение следующих и похожих ошибок:
ActiveRecord :: RecordNotНайдено в HabitsController # destroy
journal.rb
class Journal < ApplicationRecord
has_many :entries
has_many :habits
belongs_to :user
end
привыч.рб
class Habit < ApplicationRecord
belongs_to :journal
has_many :completed_dates
end
показать. html .erb
<h3>Habits</h3>
<% @journal.habits.each do |habit| %>
<div iv class="habit-list">
<div class="habit-name"><%= habit.name %></div>
<div class="habit-status">
<%= simple_form_for [@journal, @habit] do |f| %>
<%= f.input :status, label: false, :inline_label => true %>
<% end %>
</div>
<div>
<%= link_to habit_path(habit), method: :delete do %>
<i class="fas fa-trash btn-edit"></i>
<% end %>
</div>
</div>
<% end %>
habits_controller.rb
class HabitsController < ApplicationController
before_action :set_journal, only: [:new, :create, :edit, :update, :destroy]
before_action :set_habit, only: [:show, :edit, :update, :destroy]
def index
@habits = Habit.all.sort_by &:name
end
def new
@habit = Habit.new
end
def show
end
def create
@habit = @journal.habits.new(habit_params)
if @habit.save
redirect_to journal_path(@journal)
else
render :new
end
end
def edit
end
def update
if @journal.habits.update(habit_params)
redirect_to journals_path(@journal)
else
render :edit
end
end
def destroy
@habit.destroy
redirect_to journal_path(@habit, @journal)
end
private
def habit_params
params.require(:habit).permit(:name, :status, :user_id, :journal_id)
end
def set_journal
@journal = Journal.find(params[:journal_id])
end
def set_habit
@habit = Habit.find(params[:id])
end
end