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 .

Répondre à