PS: rajouter des routes sur une resource a base de get '/client/print', to: 'clients#print'
n'est pas une bonne solution Enfin, je pense que la solution de Guirel est la bonne. Le probleme vient que dans ta vue tu as url_for([:print, :clients]) New marche, donc il semblerait que le probleme soit que tu a ecrit clients et non client Mais n'utilise pas url_for, utilise les methodes *_path a la place. 2016-11-23 10:02 GMT+08:00 Florian Dutey <fdu...@gmail.com>: > 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@google >> groups.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 .