プロジェクトコントローラを作成します。
コマンド
rails g controller Project index show
app\controllers\project_controller.rb
class ProjectController < ApplicationController before_action :set_project, only: [:show] def index @projects = Project.all end def show @tasks = @project.tasks.order(:tag) end private # コールバックを使用して、アクション間で共通のセットアップまたは制約を共有します。 def set_project @project = Project.find(params[:id]) end # 信頼できるパラメータのリストのみを許可します。 def project_params params.require(:project).permit(:name, :content, :price, :active, :description) end end
タスクコントローラを作成します。
コマンド
rails g controller Task show
app\controllers\task_controller.rb
class TaskController < ApplicationController before_action :set_task, only: [:show] def show project = Project.find(params[:project_id]) @tasks = project.tasks.order(:tag) end private # コールバックを使用して、アクション間で共通のセットアップまたは制約を共有します。 def set_task @task = Task.find(params[:id]) end # 信頼できるパラメータのリストのみを許可します。 def task_params params.require(:task).permit(:title, :note, :video, :header, :tag, :project_id, :active, :description) end end
ルートの設定をします。
3~5行目に自動で書かれた記述は削除します。
記述追加 config\routes.rb(17行目)
resources :project do resources :task, only: [:show] end
config\routes.rb
Rails.application.routes.draw do # ルートを app\views\pages\home.html.erb に設定 root 'pages#home' devise_for :users, path: '', path_names: {sign_up: 'register', sign_in: 'login', edit: 'profile', sign_out: 'logout'}, controllers: {omniauth_callbacks: 'omniauth_callbacks', registrations: 'registrations'} get 'pages/home' get '/dashboard', to: 'users#dashboard' get '/users/:id', to: 'users#show' post '/users/edit', to: 'users#update' resources :project do resources :task, only: [:show] end # For details on the DSL available within this file, see https://guides.rubyonrails.org/routing.html end