2016-08-04 4 views
0

J'ai un modèle de réservation, contrôleur, vue. Les utilisateurs peuvent faire une réservation et un conducteur peut réclamer plus tard une réservation. La création de la réservation fonctionne bien, je suis en mesure d'afficher toutes les réservations non réclamées à un conducteur, mais je ne suis pas en mesure de mettre à jour la réservation avec un ID de pilote lorsque le conducteur frappe le bouton de réclamation. J'ai ajouté le driver_id au modèle de réservation et j'essaie d'utiliser la méthode de mise à jour dans le contrôleur de réservations pour mettre à jour le champ du pilote, je pense que je ne passe pas les paramètres correctement à link_to. Quelqu'un peut-il s'il vous plaît me dire ce que je fais mal:Passer des paramètres incorrects à link_to

Réservation Contrôleur:

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 

contrôleur de pilote

classe DriversController < ApplicationController before_action: authenticate_driver !, sauf: [: show]

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

fin

(drivers/index.html.erb) Voir conducteur

<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 

itinéraires Rake

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

pouvez-vous partager vos routes ... Le deuxième paramètre n'est pas le moyen de passer ... Mais je ne peux vous donner le chemin correct qu'après avoir vu les routes ... – SnehaT

+0

merci SnehaT, j'ai ajouté les routes. S'il vous plaît laissez-moi savoir ce que vous pensez – Mayank

Répondre

1

Essayez ceci:

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

essayé aussi, je reçois une erreur méthode non définie 'update_bookings_path 'pour # <# : 0x007f8be011a0a8> – Mayank

+0

vérifier les routes en exécutant la commande' rake routes '. –

+0

Mon itinéraire affiche définitivement la méthode de mise à jour - routes rake ajoutées à la description principale – Mayank