2016-08-04 11 views
0

Ich habe ein Buchungsmodell, Controller, Ansicht. Benutzer können eine Buchung vornehmen und ein Fahrer kann später eine Buchung anfordern. Die Buchungserstellung funktioniert einwandfrei, ich kann alle nicht abgeholten Buchungen einem Fahrer anzeigen, jedoch kann ich die Buchung nicht mit einer Fahrer-ID aktualisieren, wenn der Fahrer die Reklamations-Taste drückt. Ich habe die Treiber-ID zum Buchungsmodell hinzugefügt und versucht, die Aktualisierungsmethode im Buchungscontroller zu verwenden, um das Treiberfeld zu aktualisieren. Ich denke, dass ich die Parameter nicht korrekt an link_to übergebe. Kann mir bitte jemand sagen, was ich falsch mache:Ich übergebe falsche Parameter an link_to

Buchung Controller:

def update 
    if @booking.update(booking_params) 
     redirect_to @booking, notice: "Updated..." 
    else 
     render :edit 
    end 
    end 

    private 
    def set_booking 
     @booking = Booking.find(params[:id]) 
    end 

    def booking_params 
     params.require(:booking).permit(:location_pickup, :location_dropoff, :date_pickup, :date_dropoff, :weight, :load_type) 
    end 
end 

Treiber-Controller

Klasse DriversController < Application before_action: authenticate_driver !, außer: [: show]

def show 
    @driver = Driver.find(params[:id]) 
end 
def index 
    @bookings = Booking.where(:driver_id => nil) 
end 

Ende

(drivers/index.html.erb) Treiber anzeigen

<div class="row"> 
    <div class="col-md-9"> 
     <div class="panel panel-default"> 
      <div class="panel-heading"> 
       Listings 
      </div> 
      <div class="panel-body"> 
       <%= current_driver.email %> 
       <% @bookings.each do |booking| %> 
        <div class="row"> 
         <div class="col-md-2"> 

         </div>  
         <div class="col-md-7"> 
          <td> <%= booking.location_pickup %> </td> 

          <td><%= booking.location_dropoff %></td> 
         </div> 
         <div class="col-md-7"> 

          <%= link_to "Claim", update_bookings_path(@booking, driver_id: current_driver.id), :method => :patch, class: "btn btn-primary" %> 
         </div>    

        </div> 
       <% end %> 

      </div> 
     </div> 
    </div> 
</div> 

routes.rb

Rails.application.routes.draw do 

    root 'pages#home' 

devise_for  :users, 
         :path => '', 
         :path_names => {:sign_in => 'login', :sign_out => 'logout', :edit => 'profile'}, 
         :controllers => {:registrations => 'registrations' 
                 } 
devise_for :drivers, 
      :path => '/drivers', 
      :path_names => {:sign_in => 'login', :sign_out => 'logout', :edit => 'profile'},    
      :controllers => { :registrations => "drivers/registrations" } 

resources :users, only: [:show] 
resources :drivers, only: [:show, :index, :claim] 
resources :bookings 
end 

Rake Routen

edit_booking GET /bookings/:id/edit(.:format)  bookings#edit 
      booking GET /bookings/:id(.:format)   bookings#show 
        PATCH /bookings/:id(.:format)   bookings#update 
        PUT /bookings/:id(.:format)   bookings#update 
        DELETE /bookings/:id(.:format)   bookings#destroy 
+0

können Sie Ihre Routen teilen ... Der zweite Parameter ist nicht die Art und Weise zu übergeben ... Aber ich kann Ihnen den richtigen Pfad erst geben, nachdem Sie die Routen zu sehen ... – SnehaT

+0

danke SnehaT, habe ich die Routen hinzugefügt. Bitte lassen Sie mich wissen, was Sie denken – Mayank

Antwort

1

Versuchen Sie folgendes:

<%= link_to "Claim", booking_path(booking.id, driver_id: current_driver.id), :method => :patch, class: "btn btn-primary" %> 
+0

versucht, dass auch, ich bekomme einen Fehler undefinierte Methode 'update_bookings_path 'für # <# : 0x007f8be011a0a8> – Mayank

+0

Routen überprüfen, indem Sie' Rake Routen 'Befehl ausführen. –

+0

Meine Route zeigt definitiv die Update-Methode - hinzugefügte Rake-Routen zur Hauptbeschreibung – Mayank

Verwandte Themen