2016-06-30 6 views
-1

ERREUR: Aucun résultat de route [GET] "/ réservations /: id /% 3E: format"Rails: Route erreur en essayant de mettre à jour l'attribut par link_to

Je veux mettre à jour un attribut quand cliquez sur le lien de ' link_to » ..

<%= link_to 'Cancel', '/bookings/:id/(.:format)' %> 

routes.rb

put '/bookings/:id/(.:format)' => "bookings#tocancel" 
patch '/bookings/:id/(.:format)' => "bookings#tocancel" 

contrôleur

def tocancel 
@booking = Booking.find(params[:id]) 
@booking.update_attribute(:status, "cancel") 
respond_to do |format| 
    format.html { redirect_to @booking, notice: 'Booking was successfully cancelled.' } 
    format.json { render :show, status: :ok, location: @booking } 

fin

+0

Vous ne transmettez pas le format d'URL à link_to. Vous pouvez utiliser la méthode helper bookings_path et transmettre l'objet @booking. Lisez la (excellente) documentation à ce sujet: http://guides.rubyonrails.org/routing.html – MrWillihog

+0

'<% = link_to 'Annuler', 'complete_url/bookings/pass_id_value_here'%>' passe la valeur de l'identifiant dans ': id' endroit. –

+0

<% = link_to 'Annuler', tocancel_booking_path (réservation)%> ERREUR: Aucune route ne correspond [GET] "/ bookings/36/tocancel" –

Répondre

0

créer une méthode dans le contrôleur de réservations comme:

def tocancel 
@booking = Booking.find(params[:id]) 
@booking.update_attribute(:status, "cancel") 
respond_to do |format| 
    format.html { redirect_to @booking, notice: 'Booking was successfully cancelled.' } 
    format.json { render :show, status: :ok, location: @booking } 
end 
end 

Routes pour ce serait:

resources :bookings do 
    member do 
    get :tocancel 
    end 
end 

Annuler lien peut être créé comme:

link_to "Cancel", tocancel_booking_path(booking.id) 

Ici, vous devriez avoir passé la réservation pour annuler le lien. Maintenant, vérifiez comment vous obtenez booking_id sur la page où vous mettez ce lien d'annulation. Laissez-moi savoir si un problème.

+0

ERROR: variable locale non définie ou méthode 'booking_id 'pour # <# : 0x007fe38405a900> –

+0

Pouvez-vous me donner l'URL de la page où vous ajoutez ce lien. vous devez récupérer booking_id dans cette page et passer à ce lien d'annulation. – SnehaT

+0

voici le lien active.html.erb [link] (https://drive.google.com/file/d/0B-cw8FVV0gUeSENXWGlrbW1HNVU/view? usp = partage) –