ユーザーがログインし、ユーザーのセッションを維持し、ユーザーがタスクを作成できるようにするアプリケーションを作成しています。各タスクには所有者がいます。タスクは所有者ごとに提示する必要があります (つまり、ユーザーは自分が作成したタスクのみを表示できます)。
私のユーザーテーブルには次が含まれています: string name, string username, string password
、および私のタスクテーブルには
string title string body integer owner
(user.id である必要があります)
私はすでにセッションを定義しており、それらは機能しています。セッションコントローラー内に、ユーザーがすべてのタスク(タスクがある場合)+新しいタスクの作成ボタンを表示するか、新しいタスクの作成ボタンで空のページを表示するメインページにリダイレクトするメソッドがあります
def new
if signed_in?
redirect_to "/tasks/index"
end
end
私のタスク/インデックスビューには、タスク(存在する場合)を反復処理して画面に表示するメソッドが含まれています
<h1>tasks</h1>
<%= link_to 'New Task', new_task_path %>
<ul>
<% @tasks.each do |task| %>
<li>
<div>
<p><strong>Title:</strong>
<%= task.title %></p>
</div>
</li>
<% end %>
</ul>
そして私のタスクコントローラー:(私は編集方法を持っていますが、この投稿では入力していません)
class TasksController < ApplicationController
before_action :set_task, only: [:show, :update, :destroy]
def index
@tasks = Task.all
end
def show
end
def new
@task = Task.new
end
def edit
end
def create
@task = Task.new(task_params)
respond_to do |format|
if @task.save
format.html { redirect_to @task, notice: 'Task was successfully created.' }
format.json { render action: 'show', status: :created, location: @task }
else
format.html { render action: 'new' }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
def destroy
@task.destroy
respond_to do |format|
format.html { redirect_to tasks_url }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_task
@task = Task.find(params[:id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def task_params
params.require(:task).permit(:title, :user_id, :content)
end
end
私のルート
resources :tasks
resources :users
resources :sessions, only: [:new, :create, :destroy]
root 'sessions#new'
match '/new', to: 'users#new', via: 'get'
match '/signin', to: 'sessions#new', via: 'get'
match '/signout', to: 'sessions#destroy', via: 'delete'
ユーザーをタスク/インデックスに送信すると、次のエラーが発生します
Couldn't find Task with id=index
# Use callbacks to share common setup or constraints between actions.
def set_task
@task = Task.find(params[:id])
end
データベースが空で、空のページに [タスクの作成] ボタンが表示されることを期待していました。なぜこのエラーが発生するのですか?