Si tu veux '/clients/:id/print", dans tes routes, tu ajoutes resources :clients do member do get :print end end
et dans ta vue <button href="<%= print_client_path(client) %>">Print</button> Si tu veux '/clients/print' (ce qui ne semble pas ce que tu veux) resource :clients do collection do get :print end end et dans ta vue <button href="<%= print_clients_path %>">Print</button> Mais il me semble important que tu lises et comprennes la doc des routes 2016-11-23 0:51 GMT+08:00 julien bouchon <jul.bouc...@gmail.com>: > à ajouter hors du bloc 'ressource' ;) > > > Le mardi 22 novembre 2016 17:42:33 UTC+1, julien bouchon a écrit : >> >> Hello, >> je crois que quand tu déclares tes routes comme ça, ça te génère une >> route de ce type: >> >> /clients/*[client_id]*/print >> >> si tu veux quelque chose comme clients/print essaie : >> >> get "clients/print", to: 'clients#print', as: "print_clients" >> >> Le mardi 22 novembre 2016 13:59:29 UTC+1, ziburudebian a écrit : >>> >>> bonjour à tous >>> >>> j'ai un *model/controller/vue* nommé clients qui fait classiquement >>> edit, show, update >>> >>> dans *app/controllers/clients_controller.rb* j'ai ce début de code >>> >>> class ClientsController < ApplicationController >>> >>> before_action :set_client, only: [:show, :edit, :update, :destroy] >>> >>> respond_to :html >>> >>> def index >>> @clients = Client.all >>> respond_with(@clients) >>> end >>> >>> def show >>> respond_with(@client) >>> end >>> >>> def print >>> >>> end >>> >>> ...... >>> >>> >>> dans ma vue j'ai ceci : >>> >>> div.milieu >>> table border="1" >>> thead >>> tr >>> th "IDENT" >>> th "NOM" >>> tbody >>> - clients.each do |client| >>> tr >>> td = client.ident >>> td = client.lastname >>> br >>> div.action >>> table >>> tr >>> td >>> = button_to "new", url_for([:new, :"client"]), :method => "get" >>> td >>> = button_to "print", url_for([:print, :"clients"]), :method => "get" >>> >>> >>> je souhaite rajouter une méthode *print *et donc dans ma route j'ai >>> rajouté >>> >>> resource :clients do >>> get "print" >>> end >>> >>> >>> ainsi qu'une méthode dans mon controller (cf plus haut) et une vue >>> *print.html.slim* >>> >>> lorsque rails charge ma vue les deux boutons *new *et *print* >>> s'affichent correctement mais quand je clique sur *print *j'ai une >>> erreur ; voici la log : >>> >>> I, [2016-11-22T13:45:20.972040 #20643] INFO -- : Started GET "/clients" >>> for 92.103.19.65 at 2016-11-22 13:45:20 +0100 >>> I, [2016-11-22T13:45:21.037813 #20643] INFO -- : Processing by >>> ClientsController#index as HTML >>> I, [2016-11-22T13:45:21.268393 #20643] INFO -- : Rendered >>> clients/index.html.slim within layouts/application (205.5ms) >>> I, [2016-11-22T13:45:21.276660 #20643] INFO -- : Rendered >>> tpl/_header.html.slim (5.6ms) >>> I, [2016-11-22T13:45:21.350503 #20643] INFO -- : Rendered >>> tpl/_menu.html.slim (73.1ms) >>> I, [2016-11-22T13:45:21.460437 #20643] INFO -- : Rendered >>> tpl/_footer.html.slim (108.3ms) >>> I, [2016-11-22T13:45:21.460910 #20643] INFO -- : Completed 200 OK in >>> 423ms (Views: 387.4ms | ActiveRecord: 14.7ms) >>> I, [2016-11-22T13:45:24.046331 #20643] INFO -- : Started GET >>> "/clients/print" for 92.103.19.65 at 2016-11-22 13:45:24 +0100 >>> I, [2016-11-22T13:45:24.053057 #20643] INFO -- : Processing by >>> ClientsController#show as HTML >>> I, [2016-11-22T13:45:24.053158 #20643] INFO -- : Parameters: >>> {"id"=>"print"} >>> I, [2016-11-22T13:45:24.058554 #20643] INFO -- : Completed 404 Not >>> Found in 5ms >>> F, [2016-11-22T13:45:24.060876 #20643] FATAL -- : >>> ActiveRecord::RecordNotFound (Couldn't find Client with 'id'=print): >>> app/controllers/clients_controller.rb:130:in `set_client' >>> >>> >>> on dirait qu'il charge le show alors que je lui demande le print >>> >>> Merci pour votre aide >>> >>> -- > -- > Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de > Google Groups. > Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse > railsfrance@googlegroups.com > Pour résilier votre abonnement envoyez un e-mail à l'adresse > railsfrance-unsubscr...@googlegroups.com > --- > Vous recevez ce message, car vous êtes abonné au groupe Google Groupes > "Railsfrance". > Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le > concernant, envoyez un e-mail à l'adresse railsfrance+unsubscribe@ > googlegroups.com. > Pour obtenir davantage d'options, consultez la page > https://groups.google.com/d/optout. > -- -- Vous avez reçu ce message, car vous êtes abonné au groupe "Railsfrance" de Google Groups. Pour transmettre des messages à ce groupe, envoyez un e-mail à l'adresse railsfrance@googlegroups.com Pour résilier votre abonnement envoyez un e-mail à l'adresse railsfrance-unsubscr...@googlegroups.com --- Vous recevez ce message, car vous êtes abonné au groupe Google Groupes Railsfrance. Pour vous désabonner de ce groupe et ne plus recevoir d'e-mails le concernant, envoyez un e-mail à l'adresse railsfrance+unsubscr...@googlegroups.com. Pour plus d'options, visitez le site https://groups.google.com/d/optout .