Forum: Rails France Pb avec les formulaires

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
163018eee22b927a10b6a99584d6a10d?d=identicon&s=25 Zied (Guest)
on 2009-04-25 21:08
(Received via mailing list)
Salut,

j'ai un formulaire de recherche situé dans view qui contient ceci:

<% form_tag :action => 'search' do %>
 <p><label>nom:<br />
  <%= text_field :appls, :nom %></label></p>
  <p><%= submit_tag 'search!' %></p>
<% end %>


le controleur contient la definition de l'action search

def search
  @appls = Appl.find :all, :conditions=>[ "nom = ?", params[:nom] ]
  end


En jettant un coup d'oeil sur le log:

  SQL (0.1ms)   SET NAMES 'utf8'
  SQL (0.1ms)   SET SQL_AUTO_IS_NULL=0


Processing ApplsController#search (for 127.0.0.1 at 2009-04-25
18:44:15) [POST]
  Parameters: {"commit"=>"search!",
"authenticity_token"=>"rAH6e7qIF63+X53tZ2cwGcEKp5wmLOuhPXeqEy/ciDk=",
"appls"=>{"nom"=>"aaaa"}}
  Appl Load (26.2ms)   SELECT * FROM `appls` WHERE (nom = NULL)
Rendering template within layouts/appls
Rendering appls/search
Completed in 486ms (View: 391, DB: 26) | 200 OK [http://0.0.0.0/appls/
search]


Je pense que la valeur du formulaire n'a pas été envoyé ou n'a pas
bien reçu..

Merci d'avance :)
98d4d4be867fc17d3120f683513d3819?d=identicon&s=25 Guillaume Betous (Guest)
on 2009-04-25 21:15
(Received via mailing list)
>
>  Parameters: {"commit"=>"search!",
> "authenticity_token"=>"rAH6e7qIF63+X53tZ2cwGcEKp5wmLOuhPXeqEy/ciDk=",
> "appls"=>{"nom"=>"aaaa"}}


tu as la solution sous les yeux (-:

la valeur n'est pas dans params[:nom], mais dans params[:appls][:nom] ou
qqchose dans ce gout-là (j'avoue que je ne sais pas exactement)

gUI



--
Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/
79b719d7f060027f31511f43f030e5c7?d=identicon&s=25 Tony Chauveau (kusanar)
on 2009-04-25 21:20
En effet, la réponse était devant toi.

Juste une petite note tout de même qui a son importance

> @appls = Appl.find :all, :conditions=>[ "nom = ?", params[:nom] ]

Tu devrais éviter ceci en validant le contenu de ton paramètre, ce
serait dommage que quelqu'un en profite pour injecter du sql dans ta
requête
98d4d4be867fc17d3120f683513d3819?d=identicon&s=25 Guillaume Betous (Guest)
on 2009-04-25 21:31
(Received via mailing list)
> > @appls = Appl.find :all, :conditions=>[ "nom = ?", params[:nom] ]
>
> Tu devrais éviter ceci en validant le contenu de ton paramètre, ce
> serait dommage que quelqu'un en profite pour injecter du sql dans ta
> requête


Il me semblait que justement l'utilisation du '?' évitait l'injection
SQL,
et que ce qu'il faut absolument éviter (interdire ?) c'est :
@appls = Appl.find :all, :conditions=>[ "nom ="+params[:nom] ]

gUI

--
Pour la santé de votre ordinateur, préférez les logiciels libres.
Lire son mail : http://www.mozilla-europe.org/fr/products/thunderbird/
Browser le web : http://www.mozilla-europe.org/fr/products/firefox/
Suite bureautique : http://fr.openoffice.org/
0bd2369c7315fc5f9d717d42c53aa54d?d=identicon&s=25 Baptiste Decroix (Guest)
on 2009-04-25 23:19
(Received via mailing list)
2009/4/25 Guillaume Betous <guillaume.betous@gmail.com>:
>
> gUI
>
2009/4/25 Tony Chauveau <list-incoming@andreas-s.net>:
>> @appls = Appl.find :all, :conditions=>[ "nom = ?", params[:nom] ]
>
> Tu devrais éviter ceci en validant le contenu de ton paramètre, ce
> serait dommage que quelqu'un en profite pour injecter du sql dans ta
> requête

Ben non, c'est la magie du "?" je confirme
163018eee22b927a10b6a99584d6a10d?d=identicon&s=25 Zied (Guest)
on 2009-04-27 17:16
(Received via mailing list)
Merci bcp pour les éclaircissments :)..

Là je tombe sur le même problème mais en travaillant avec date_select.

J'ai un formulaire qui contient date_select.

    <td><%= date_select :appls, :date, :include_blank => true,
                 :order=>[:day,:month,:year],
                 :use_month_numbers=>true, :start_year=>2006,
                 :end_year=>2010 %></td>
    <td><%= submit_tag 'Envoyer' %></td>

Mais en choisissant une date le log affiche ceci

Processing ApplsController#searchdate (for 127.0.0.1 at 2009-04-27
16:10:39) [POST]
  Parameters: {"commit"=>"Envoyer",
"authenticity_token"=>"HMuRzLZnh9ht0MoUUXRzNLUTV/TPjX3Tp0tDRFeBUvU=",
"appls"=>{"date(1i)"=>"2009", "date(2i)"=>"6", "date(3i)"=>"5"}}
  Appl Load (0.4ms)   SELECT * FROM `appls` WHERE (date > NULL)

mon action associé est
@appls = Appl.find :all, :conditions=>["date > ?" , params[:appls]
[:date]]

C koi le paramètre exact?

Merci d'avance :)
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2009-04-27 18:00
(Received via mailing list)
Le 27 avr. 09 à 17:16, Zied a écrit :

>                 :end_year=>2010 %></td>
>
> mon action associé est
> @appls = Appl.find :all, :conditions=>["date > ?" , params[:appls]
> [:date]]
>
> C koi le paramètre exact?

Celui écrit qui est :

params[:appls]['date(1i)] etc...

Il suffit de regarder sur les params qui te sont envoyé. On ne va pas
te lire tous tes logs ?

--
Cyril Mougel
http://blog.shingara.fr
5d3f7d8e534a892e3029a3f3b9761de5?d=identicon&s=25 Zaphod Beeblebrox (Guest)
on 2009-04-27 18:49
(Received via mailing list)
Lis les chapitres à partir de 2.2.1
http://guides.rubyonrails.org/active_record_querying.html
163018eee22b927a10b6a99584d6a10d?d=identicon&s=25 Zied (Guest)
on 2009-04-28 11:23
(Received via mailing list)
@Cyril: merci :)

Bon ma question est : est ce que je vais prendre l'objet date en
totalité ou bien concaténer date(1i), date(2i) et date(3i). Si c le
cas, sous quelle forme je la traite et comment..

NB. La méthode to_date ne marche pas..

Merci :)
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2009-04-28 12:54
(Received via mailing list)
Le 28 avr. 09 à 11:22, Zied a écrit :

>
> @Cyril: merci :)
>
> Bon ma question est : est ce que je vais prendre l'objet date en
> totalité ou bien concaténer date(1i), date(2i) et date(3i). Si c le
> cas, sous quelle forme je la traite et comment..

Ma réponse est :

params.to_inspect

tu sauras ce que c'est au final. Après à toi de récupérer ce que tu veux
--
Cyril Mougel
http://blog.shingara.fr
163018eee22b927a10b6a99584d6a10d?d=identicon&s=25 Zied (Guest)
on 2009-04-28 16:18
(Received via mailing list)
undefined method `to_inspect'
Be1e3ee645d23c95ba650c21bc885927?d=identicon&s=25 Fabien Jakimowicz (Guest)
on 2009-04-28 16:19
(Received via mailing list)
2009/4/28 Zied <khzied@gmail.com>

>
> undefined method `to_inspect'
>
>
inspect

--
http://fabien.jakimowicz.com
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2009-04-28 16:36
(Received via mailing list)
Le 28 avr. 09 à 16:17, Zied a écrit :

>
> undefined method `to_inspect'

undefined method respond

--
Cyril Mougel
http://blog.shingara.fr
163018eee22b927a10b6a99584d6a10d?d=identicon&s=25 Zied (Guest)
on 2009-04-29 12:23
(Received via mailing list)
bonjour,

j'ai essayé de travailler avec inspect mais ça pas marché..
j'ai obtenu comme log

SELECT * FROM `appls` WHERE (date > '{\"date(1i)\"=>\"2006\", \"date
(2i)\"=>\"2\", \"date(3i)\"=>\"1\"}')
et j'ai pas reçu de réponse à ma requete

Bon j'ai essayé  de concaténer en premier lieu chaque variable envoyé
à part
i=params[:appls]['date(1i)']+"/"+params[:appls]['date(2i)']+"/"+params
[:appls]['date(3i)']
et utiliser par la suite
@appls = Appl.find :all, :conditions=>["date > ?" , i ]

et ça a marché..

Mais je cherche encore comme utiliser inspect pour prendre en un seul
bloc la date envoyée par date_select.. Peut être que je dois convertir
le hash en format date.. En tt cas, j'ai pas trouvé la solution..

Est ce que je peux avoir encore plus d'éclaircissements..

Merci :)
2fd0206c71a1b22a9cc6293f38537461?d=identicon&s=25 Cyril Mougel (shingara)
on 2009-04-29 12:27
(Received via mailing list)
Le 29 avr. 09 à 12:22, Zied a écrit :

> Bon j'ai essayé  de concaténer en premier lieu chaque variable envoyé
> à part
>
> Est ce que je peux avoir encore plus d'éclaircissements..

http://ruby-doc.org/core/classes/Object.html#M000358

La documentation t'aidera à comprendre ce qu'est inspect. Après je ne
pourrais rien de plus pour toi.

--
Cyril Mougel
http://blog.shingara.fr
This topic is locked and can not be replied to.