0

ネストされたルートがappointmentsありschedules 、移動しようとすると、doctors/1/appointments/またはdoctors/1/schedules/ルート エラーが発生します。私には、インデックス ページ内のリンクにエラーがあるように見えますが、レーキ ルートを確認したところ、すべて問題ないようです。編集、表示、および新しいアクションは正常に機能します。

私は何を間違っていますか?

route.rb

Pgranges::Application.routes.draw do

  root :to => "Doctors#index"

  resources :doctors do
    resources :appointments  
    resources :schedules  
  end

  resources :appointment_steps
end

これは私のインデックスファイルです:

<h1>Listing appointments</h1>

<table>
  <tr>
    <th>Doctor</th>
    <th>Adate</th>
    <th></th>
    <th></th>
    <th></th>
  </tr>

<% @appointments.each do |appointment| %>
  <tr>
    <td><%= appointment.doctor_id %></td>
    <td><%= appointment.adate %></td>
    <td><%= link_to 'Show', doctor_appointment_path %></td>
    <td><%= link_to 'Edit', edit_doctor_appointment_path(appointment) %></td>
    <td><%= link_to 'Destroy', doctor_appointment, method: :delete, data: { confirm: 'Are you sure?' } %></td>
  </tr>
<% end %>
</table>

<br />

<%= link_to 'New Appointment', new_doctor_appointment_path %>

私のコントローラーは次のようになります。

class SchedulesController < ApplicationController
  def index
    @doctor = Doctor.find(params[:doctor_id])    
    @schedules = @doctor.schedules.all



    respond_to do |format|
      format.html # index.html.erb
      format.json { render json: @schedules }
    end
  end

  def show
    @doctor = Doctor.find(params[:doctor_id])        
    @schedule = @doctor.schedules.find(params[:id])

    respond_to do |format|
      format.html # show.html.erb
      format.json { render json: @schedule }
    end
  end

  def new
    @doctor = Doctor.find(params[:doctor_id])
    @schedule = @doctor.schedules.new

    @doctors = Doctor.all


    respond_to do |format|
      format.html # new.html.erb
      format.json { render json: @schedule }
    end
  end

  def edit
    @doctor = Doctor.find(params[:doctor_id])    
    @schedule = @doctor.schedules.find(params[:id])
  end

  def create
    @doctor = Doctor.find(params[:doctor_id])    
    @schedule = @doctor.schedules.new(params[:schedule])

    if @schedule.save
      redirect_to doctor_url(@schedule.doctor_id)
    else
      render action: 'new'
    end


  end

  def update
    @schedule = Schedule.find(params[:id])

    respond_to do |format|
      if @schedule.update_attributes(params[:schedule])
        format.html { redirect_to @schedule, notice: 'Schedule was successfully updated.' }
        format.json { head :no_content }
      else
        format.html { render action: "edit" }
        format.json { render json: @schedule.errors, status: :unprocessable_entity }
      end
    end
  end

  def destroy
    @schedule = Schedule.find(params[:id])
    @schedule.destroy

    respond_to do |format|
      format.html { redirect_to schedules_url }
      format.json { head :no_content }
    end
  end
end
4

1 に答える 1

1

ネストされたリソースのルーティング ヘルパーには、両方のリソース (医師と予約) を渡す必要があります。また、削除リンクの _path を忘れました。これを試して:

<td><%= link_to 'Show', doctor_appointment_path(appointment.doctor, appointment) %></td>
<td><%= link_to 'Edit', edit_doctor_appointment_path(appointment.doctor, appointment) %></td>
<td><%= link_to 'Destroy', doctor_appointment_path(appointment.doctor, appointment), method: :delete, data: { confirm: 'Are you sure?' } %></td>

アップデート:

また、新しい予約リンクの場合:

<%= link_to 'New Appointment', new_doctor_appointment_path(appointment.doctor) %>
于 2013-01-20T20:52:36.660 に答える