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
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
danke SnehaT, habe ich die Routen hinzugefügt. Bitte lassen Sie mich wissen, was Sie denken – Mayank