1) tu veux imprimer quoi? /clients? C'est un listing?
2) Pourquoi creer une nouvelle route pour ca? Tu peux le gerer en ajoutant
le format .pdf a ton index. /clients => html, /clients.pdf => la meme en
pdf.

Maintenant regarde bien ton log Rails

ActionController::RoutingError (No route matches [POST] "/clients/print")

Pour une raison qui m'echappe (et je chercherai pas a savoir, je vomis les
vues html en rails), ta vue soumet la requete en POST alors que ta route
est en GET. Donc, corrige ta vue et tout ira bien <%= button_to 'print',
print_clients_path, method: :get %>.
Ou mieux <%= button_to 'print', clients_path(format: :pdf), method: :get %>

Bye

2016-11-23 23:34 GMT+08:00 ziburudebian <devmap...@gmail.com>:

> effectivement j'avais oublie le s de ressource mais cela ne fonctionne
> toujours  pas
> le print, je l'ai pas encore code, j'ai mis pour l'instant un redirect_to;
> le but futur (mais ce n'est pas là le sujet) consistera à envoyer dans un
> pdf avec whhtmltopdf la page web
>
> ce que j'aimerai bien comprendre (avant de lire.. le doc des routes...)
> c'est pourquoi http://localhost:3000/clients/print ne fonctionne pas
> alors qu'il est dans la route !!!
>
> 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 .

Répondre à