2010-03-11 2 views
2

Juste pour le fun, j'ai écrit un très petit blog de rails (juste un monde bonjour). Maintenant, je veux créer un message en utilisant mécaniser. J'ai donc créé un Ruby Prog et commencé à coder.Ruby: Problèmes d'utilisation de Mechanize pour accéder à mon formulaire!

Voici mon problème: Rails crée mon élément de formulaire incluant toutes les entrées. En HTML mes entrées ressembler à ceci:

<input type="text" size="30" name="post[title]" id="post_title"> 

ou

<textarea rows="20" name="post[description]" id="post_description" cols="40"></textarea> 

Eh bien ... Voici mon utilisant Ruby Prog Mechanize:

require 'rubygems' 
require 'mechanize' 

agent = WWW::Mechanize.new 

page = agent.get('http://localhost:3000/posts/new') 
target_form = page.form_with(:class => 'new_post') 
target_form.post[title] = "test" 
target_form.post[description] = "test" 
page = agent.submit(target_form) 
puts "end" 

Je sais où mon erreur est mais je ne sais pas comment le réparer. A target_form.post [title] = "test", il se bloque, cause de

undefined method `name' for nil:NilClass (NoMethodError) 

Je pense que (s'il vous plaît me corriger), il est à cause du nom de l'entrée, car il est [titre] poste au lieu de seulement après droite? Comment puis-je le réparer?

+0

probablement votre '' target_form' est nil', donc 'page.form_with (: class => 'new_post')' 'est de retour nil'. – klew

Répondre

5

Que diriez-vous

target_form.field_with(:name => "post[title]").value = "test" 
target_form.field_with(:name => "post[description]").value = "test" 
+0

Lorsque j'essaie votre code, il me dit: la méthode non définie 'field_with 'pour nil: NilClass (NoMethodError) Des idées? – Newbie

+0

Dans ce cas, 'target_form = page.form_with (: class => 'new_post')' ne fonctionne pas. – anshul

+0

Oh, d'accord, vous avez raison. J'ai oublié d'inclure mon proxy. Alors j'ai fait ça. Maintenant, j'ai une autre erreur: ... mechanize.rb: 553: dans 'fetch_page ': 503 => Net :: HTTPServiceUnavailable (WWW :: Mechanize :: ResponseCodeError) On dirait que mechanice n'est pas capable d'accéder à ma page , droite? Des idées pourquoi? Cela semble être dû à localhost. L'utilisation d'un autre domaine comme google.com ou quelque chose fonctionnera. – Newbie

Questions connexes