2011-05-26 2 views
0

Je dois faire quelque chose de mal. J'ai une recherche simple qui fonctionne bien en développement (avec sqlite3 DB) mais pas en production (avec MySQL DB). Je ne sais pas comment déboguer.Rails 3 problème Metasearch, mais seulement dans la production

Voici les détails:

Controller:

def index 
    @search = Individual.search(params[:search]) 
    @individuals = @search.all 
    # @individuals = @search.order(:lastname).page params[:page] 
end 

Vue:

= form_for @search, :url => individuals_path, :html => {:method => :get} do |f| 
    %fieldset 
    %strong 
     = f.label :firstname_like, "First Name?" 
    = f.text_field :firstname_like 
    %strong 
     = f.label :lastname_like, "Last Name?" 
    = f.text_field :lastname_like 
    = f.submit "Search" 

Pas de problème à l'aide de la console dans l'environnement de production:

Individual.search :lastname_like => 'Smith', :firstname_like => '' 
=> #<MetaSearch::Searches::Individual:0blahblah.... 

Juste ne fonctionne pas via le navigateur. Je reçois chaque individu retourné. (Pas d'erreur)

Je me demande si c'est quelque chose à voir avec l'encodage d'URL?

Started GET "/individuals/?utf8=%25E2%259C%2593&search%255Bfirstname_like%255D=& search%255Blastname_like%255D=hermans&commit=Search" for 68.87.23.92 at Thu May 26 09:22:31 -0700 2011 
    Processing by IndividualsController#index as HTML 
    Parameters: {"commit"=>"Search", "search%5Bfirstname_like%5D"=>"", "utf8"=>"%E2%9C%93", "search%5Blastname_like%5D"=>"smith"} 

Des idées? Ou au moins comment déboguer?

Rails 3.0.7 Metasearch 1.0.3

+0

Je me demande si Passenger ou Rack fait quelque chose de bizarre. Je suis sur Dreamhost. (Aucune de mes autres applications n'est affectée) – thermans

Répondre

0

Oui, je dirais que c'est quelque chose avec l'URL. Pour autant que je peux dire qu'il devrait ressembler à ceci:

/individuals/?utf8=%E2%9C%93&search%5Bfirstname_like%5D=&search%5Blastname_like%5D=hermans&commit=Search 

Je ne me haml, donc je ne peux pas dire ce qui se passe mais il y a un problème avec votre formulaire. Il ajoute ces '25 dans chaque personnage encodé. L'encodage est-il correctement défini sur votre page?

+0

Le codage était-il le problème? – dogenpunk

0

Si vous obtenez la sortie sur la console, votre fonction fonctionne correctement. Pour déboguer, essayez d'enregistrer les informations à chaque étape et voyez où cela se passe, par ex. imprime les paramètres passés à la fonction de recherche, quelle sortie renvoie la recherche, etc etc et voir où va la chose wierd. Vous pouvez également regarder la requête db lancée dans production.log et essayer de l'exécuter manuellement à partir du terminal et voir le résultat.

Vous pouvez même essayer d'exécuter votre application en mode développement sur le serveur de production, en changeant database.yml pour utiliser la production db et mysql pour voir s'il s'agit d'un problème spécifique à l'environnement.

Questions connexes