Отображение /home/arthur/Desktop/application/todo/app/views/tasks/index.html.erb, где поднята строка # 7: SQLite3 :: SQLException: такого столбца нет: tasks.list_id
Эта ошибка появляется, когда я пытаюсь открыть созданный список для добавления новых задач. Я думаю, проблема в том, что приложение не может получить идентификатор списка, который я пытаюсь открыть. Но я не могу понять, что не так. (новый с ruby и рельсами). Нужно ли добавлять представления или что-то еще?
Task Controller
class TasksController < ApplicationController
helper_method :task, :list, :tasks
def create
task.save
redirect_to list_tasks_path(list)
end
def update
task.update task_params
redirect_to list_tasks_path(list)
end
def complete
task.complete
redirect_to list_tasks_path(list)
end
def destroy
task.destroy
redirect_to list_tasks_path(list)
end
private
delegate :tasks, to: :list, private: true
def task
@task ||= params[:id] ? list.tasks.find(params[:id]) : list.tasks.new(task_params)
end
def list
@list ||= List.find params[:list_id]
end
def task_params
params.require(:task).permit(:title, :completed)
end
end
и ListsController
class ListsController < ApplicationController
#helper_method :list, :lists
def index
@lists = List.order('created_at')
end
def new
@list = List.new
end
def create
@list = List.new list_params
@list.save
redirect_to lists_path
end
def edit
@list = List.find params[:id]
redirect_to lists_path
end
def update
@list = List.find params[:id]
@list.update list_params
redirect_to lists_path
end
def destroy
@list = List.find params[:id]
@list.destroy
redirect_to lists_path
end
private
def list_params
params.require(:list).permit(:title)
end
end
Просмотр индекса. html .erb
<div class="col-md-12">
<h2>Tasks</h2>
<div class="buffer-top"><%= link_to "New Task", new_list_task_path(list), class: 'btn btn-primary' %></div>
<div class="buffer-top">
<% tasks.each do |task| %> <----------- this line
<%= render partial: 'task', object: task %>
<% end %>
</div>
<div class="buffer-top"><%= link_to "Back to Lists", lists_path, class: 'btn btn-primary btn-sm' %></div>
</div>
class Task < ApplicationRecord
belongs_to :lists
def complete!
self.completed = true
save
end
end
class List < ApplicationRecord
has_many :tasks
end
схема
ActiveRecord::Schema.define(version: 2020_04_06_202846) do
create_table "lists", force: :cascade do |t|
t.string "title"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
create_table "tasks", force: :cascade do |t|
t.string "title"
t.boolean "completed"
t.datetime "created_at", precision: 6, null: false
t.datetime "updated_at", precision: 6, null: false
end
end