Ici j'ai un projet auquel j'ajoute une session et pour une session de projet j'essaye d'ajouter la tâche. je suis capable de créer le projet et ajouter la session de projet pour le projet mais quand j'essaye d'ajouter la tâche pour la session utilisant project_sessions_id
j'obtiens erreur Couldn't find ProjectSession with 'id'=
et 'app/controllers/tasks_controller.rb:60:in set_project_session
je peux obtenir l'identification de session de projet également project_sessions/11
dans l'url mais quand je clique 'créer une tâche' je reçois cette erreur. Comment puis-je résoudre ça?Impossible de trouver ProjectSession avec 'id' =
voici ce que je l'ai fait
ProjectSessionController:
class ProjectSessionsController < ApplicationController
before_action :set_project_session, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
before_action :set_project
def index
@project_sessions = ProjectSession.all
end
def show
@project_sessions = ProjectSession.where(project_id: @project.id).order("created_at DESC")
end
def new
@project_session = ProjectSession.new
end
def edit
end
def create
@project_session = ProjectSession.new(project_session_params)
@project_session.project_id = @project.id
#respond_to do |format|
if @project_session.save
redirect_to @project
#format.html { redirect_to @project_session, notice: 'Project session was successfully created.' }
#format.json { render :show, status: :created, location: @project_session }
else
format.html { render :new }
format.json { render json: @project_session.errors, status: :unprocessable_entity }
end
#end
end
def update
respond_to do |format|
if @project_session.update(project_session_params)
format.html { redirect_to @project_session, notice: 'Project session was successfully updated.' }
format.json { render :show, status: :ok, location: @project_session }
else
format.html { render :edit }
format.json { render json: @project_session.errors, status: :unprocessable_entity }
end
end
end
def destroy
@project_session.destroy
respond_to do |format|
format.html { redirect_to project_sessions_url, notice: 'Project session was successfully destroyed.' }
format.json { head :no_content }
end
end
private
# Use callbacks to share common setup or constraints between actions.
def set_project_session
@project_session = ProjectSession.find(params[:id])
end
def set_project
@project = Project.find(params[:project_id])
end
# Never trust parameters from the scary internet, only allow the white list through.
def project_session_params
params.require(:project_session).permit(:session_date, :session_name, :session_description, :start_time, :end_time)
end
end
contrôleur de tâches:
class TasksController < ApplicationController
before_action :set_task, only: [:show, :edit, :update, :destroy]
before_action :authenticate_user!
before_action :set_project_session
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)
@task.session_id = @project_session.id
respond_to do |format|
if @task.save
redirect_to @project_session
else
format.html { render :new }
format.json { render json: @task.errors, status: :unprocessable_entity }
end
end
end
def update
respond_to do |format|
if @task.update(task_params)
format.html { redirect_to @task, notice: 'Task was successfully updated.' }
format.json { render :show, status: :ok, location: @task }
else
format.html { render :edit }
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, notice: 'Task was successfully destroyed.' }
format.json { head :no_content }
end
end
private
def set_task
@task = Task.find(params[:id])
end
def set_project_session
@project_session = ProjectSession.find(params[:project_session_id])
end
def task_params
params.require(:task).permit(:name, :description)
end
end
routes:
Rails.application.routes.draw do
get 'hr_dashboard/index'
resources :roles
resources :project_sessions
devise_for :users
resources :tasks
resources :projects do
resources :project_sessions, except: [:show, :index]
end
resources :project_sessions do
resources :tasks, except: [:show, :index]
end
authenticated :user do
root 'admindashboard#index', as:"authenticated_root"
end
root 'welcome#index'
get 'userdashboard/index'
get 'admindashboard/index'
get 'welcome/index'
end
View pour créer une nouvelle tâche
<div class="container">
<h1>New Task</h1>
<%= form_for(@task) do |f| %>
<% if @task.errors.any? %>
<div id="error_explanation">
<h2><%= pluralize(@task.errors.count, "error") %> prohibited this task from being saved:</h2>
<ul>
<% @task.errors.full_messages.each do |message| %>
<li><%= message %></li>
<% end %>
</ul>
</div>
<% end %>
<div class="field">
<%= f.label :name %><br>
<%= f.text_field :name %>
</div>
<div class="field">
<%= f.label :description %><br>
<%= f.text_area :description %>
</div>
<div class="actions">
<%= f.submit %>
</div>
<% end %>
<%= link_to 'Back', tasks_path %>
</div>
Pouvez-vous poster vos itinéraires –
@ j-dexx J'ai mis à jour le poste avec les routes .. –
Ok, donc vos itinéraires sont imbriqués, pouvez-vous fournir le code de vue pour le lien s'il vous plaît. –