Je maintiens un site Web de Ruby-sur-Rails (exécutant réellement JRuby 1.5.5, version 2.3.10 de Rails) et vois quelque chose assez étrange. Une certaine action du contrôleur est à l'origine une exception dans les journaux, quand on y accède par un bot moteur de recherche:Problème de RoR étrange; googlebot obtient l'erreur, l'homme voit la page
ActionView::TemplateError (can't convert nil into String) on line #14 of app/vie
ws/scenarios/show_send_message.rhtml:
11: <% if ! is_logged_in? %>
12: <p>Your email (optional, used to contact you if necessary):<br /><%= tex
t_field_tag 'user_email', @user_email || '', :size => 50 %>
13: <% if ! is_human? %>
14: <%= show_simple_captcha %>
15: <% end %>
16: <% end %>
17: <p><%= submit_tag 'Send' %>
... Cependant, quand je view the page as a human, il fonctionne très bien. "show_simple_captcha" est une méthode d'un plugin, et il ne peut pas retourner nil.
Quelqu'un a-t-il une idée de la raison pour laquelle RoR répondrait différemment à un bot par rapport à un vrai navigateur? Je ne cherche pas tellement la réponse au problème que je suis un moyen de procéder au débogage, mais j'accepterai volontiers le premier.
javascript dans le captcha. – s84
Pouvez-vous fournir la trace de la pile ou est-ce cela? – rwilliams
@Sam, il n'y a pas de javascript dans le captcha, et de toute façon cela n'explique pas pourquoi je reçois cette erreur sur le côté serveur. – davmac