0

ユーザーがログインし、ユーザーのセッションを維持し、ユーザーがタスクを作成できるようにするアプリケーションを作成しています。各タスクには所有者がいます。タスクは所有者ごとに提示する必要があります (つまり、ユーザーは自分が作成したタスクのみを表示できます)。

私のユーザーテーブルには次が含まれています: 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

データベースが空で、空のページに [タスクの作成] ボタンが表示されることを期待していました。なぜこのエラーが発生するのですか?

4

1 に答える 1