1
ユーザーに代わってコメントを投稿できるRubyアプリケーションをリモートブログに書き込む。私の問題は、私はキャプチャを記入する&セッションを存続するために、コントローラのPOSTメソッドで同じページを使用する必要があることです。機械化ページオーバーリクエストの境界を維持する
アプリ/コントローラ/ comment_controller.rb
require 'mechanize'
class CommentController < ApplicationController
def new
agent = Mechanize.new
@page = agent.get('http://blog.example.com')
@captcha_src = @page.search("//div[@id='recaptcha_image']").search("//img")[1].attribute("src")
#etc.
end
def post_comment
# insert captcha, username, password + text into the form
agent.submit(@page.form[0], @page.form[0].buttons.submitbutton) # Problem: page instance variable doesn't exist anymore
end
end
私はすでにRails.cacheにpage-instance-variableを保存しようとしましたが、機械化されたページを文字列にマーシャリングすることはできません。
これはレールコントローラですか?なぜあなたは@pageがリクエストの間に持続すると思いますか?それともエージェントですか? 「新しい」方法を持つことは良い考えのようですか?私はあなたがルビーやレールの基本的な理解を欠いていると思います。 – pguardiario
@pguardiario:リクエストの間に '@page'が続くとは思わないが、問題の中核となるagent.submit line-commentを見てください。 new-Methodは、生成されたレール(足場)です。 – wintersolutions