2010-11-23 44 views
0

J'écris un formulaire de recherche pour mes Rails (2.3.9 mais j'ai vérifié que ce problème existe aussi sur 3.0.3). Le problème est que Rails supprime les guillemets de l'entrée des utilisateurs. Je voudrais donner la possibilité aux utilisateurs d'écrire:Problème avec les guillemets de suppression des Rails du formulaire de saisie

  • « rubis sur des rails »: et ceci recherche texte intégral pour toute la chaîne
  • rubis sur des rails: ce serait rechercher des articles avec tous les trois mots

Mais dans mon contrôleur pour les deux cas, je reçois une seule chaîne:

Processing NewsController#index (for 127.0.0.1 at 2010-11-23 10:23:15) [GET] 
    Parameters: {"action"=>"index", "controller"=>"news", "search"=>{"category"=>"", "news_agency"=>"", "fullsearch"=>"ruby on rails", "order"=>""}} 

y at-il possibilité de sauter cette dépouillant le quot marques d'ation

Remarque: Lorsque l'utilisateur ajoute des espaces pour les deux côtés pour la chaîne de recherche par exemple: ' « rubis sur des rails » la chaîne va se correctement envoyé:

Processing NewsController#index (for 127.0.0.1 at 2010-11-23 10:23:15) [GET] 
    Parameters: {"action"=>"index", "controller"=>"news", "search"=>{"category"=>"", "news_agency"=>"", "fullsearch"=>" \"ruby on rails\" ", "order"=>""}} 

Répondre

0

tous les params d'un forme arrivera au contrôleur sous forme de chaînes, les rails infère des valeurs à la base de données via activerecord, donc il sait si vous envoyez "5" à une colonne entière dans la DB, qu'il devrait changer à 5. mais pour les chaînes de recherche, vous avez besoin faire de votre propre magie. comme suit:

irb(main):001:0> "ruby on rails".split(" ") 
=> ["ruby", "on", "rails"] 

qui fournit un tableau de termes de recherche à rechercher par rapport à chaque terme individuel.

irb(main):006:0> terms 
=> ["ruby", "on", "rails"] 
irb(main):013:0> terms.each do |term| 
irb(main):014:1* puts "this sentence on rails".match(term) 
irb(main):015:1> end 
nil 
on 
rails 
=> ["ruby", "on", "rails"] 
+0

désolé, je pense que je mal compris le contexte de la question. –

0

Je ne peux pas le reproduire dans mes Rails 2.3.5. Êtes-vous sûr que ce n'est pas le navigateur qui supprime les guillemets? Aussi, cela arrive-t-il si vous utilisez POST pour le formulaire de recherche?