0

予約モデルがあります。ユーザーがいずれかのリンクをクリックして予約を確認/拒否するようにします。フォームを作成する必要がないようにしています。

これが私がそれを実装しようとした方法です:

<% @bookings.each do |booking| %>
    <%= link_to "Confirm", appointment_booking_path(@appointment, booking, :status => "confirmed"), :method => :put, confirm: 'Are you sure?', :class => 'btn btn-success' %>
    <%= link_to "Reject", appointment_booking_path(@appointment, booking, :status => "rejected"), :method => :put, confirm: 'Are you sure?',:class => 'btn btn-danger' %>
<%end%>

リンクの1つをクリックすると、このエラーが発生します。

NoMethodError in BookingsController#update
undefined method `[]' for nil:NilClass
app/controllers/bookings_controller.rb:64:in `update'

予約は予定内にネストされています。これが私のレーキルートです:

                          PUT    /appointments/:appointment_id/bookings/:id(.:format) 
appointment_booking       GET    /appointments/:appointment_id/bookings/:id(.:format)
edit_appointment_booking  GET    /appointments/:appointment_id/bookings/:id/edit(.:format)

BookingController更新アクション:

line 64*    @appointment = Appointment.find(params[:booking][:appointment_id])
            @booking = Booking.find(params[:id])  

さらに情報が必要な場合はお知らせください。前もって感謝します。

4

1 に答える 1

1

appointment_bookingレーキ ルートを注意深く見ると、そうであり、そうでないことがわかりますappointment_bookings(つまりs、 の最後にno がありbookingsます)。

また、最初の引数として予定のインスタンスを渡す必要があります。あなたの予定が呼ばれると仮定して@appointment、これを試してください:

<% @bookings.each do |booking| %>
  <%= link_to "Confirm", appointment_booking_path(@appointment, booking, :status => "confirmed"), :method => :put, confirm: 'Are you sure?', :class => 'btn btn-success' %>
  <%= link_to "Reject", appointment_booking_path(@appointment, booking, :status => "rejected"), :method => :put, confirm: 'Are you sure?',:class => 'btn btn-danger' %>
<% end %>
于 2012-10-04T13:44:05.063 に答える