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会在请求之间持续存在?或代理人的事情?有一个'新'方法似乎是一个好主意?我认为你在这里错过了对ruby和/或rails的基本理解。 – pguardiario 2012-01-30 16:16:53
@pguardiario:我不认为'@page'在请求之间持续存在,请参阅agent.submit行注释,这就是问题的核心。新方法是轨道生成(脚手架)。 – wintersolutions 2012-01-30 18:07:58