在HTML中调用Ruby脚本的正确方法

时间:2014-03-17 01:50:27

标签: html ruby gem mechanize

这是在HTML文件中调用ruby脚本的正确方法吗?

HTML

<form id="cse-search-box" action="mechanize.rb">
<input type="text" id="text" name="text_name" class="mytext" />
<input id="search" type="submit" value="" style="border-style: none; background: url('search.png') no-repeat; width: 50px; height: 50px;">
</form>

红宝石

require 'rubygems'
require 'mechanize'

a = Mechanize.new { |agent|
  agent.user_agent_alias = 'Mac Safari'
}

a.get('http://google.com/') do |page|
  search_result = page.form_with(:name => 'f') do |search|
    search.q = 'Hello world'
  end.submit

  search_result.links.each do |link|
    puts link.text
  end
end

它不是执行Ruby代码,而是以文本形式在浏览器中显示Ruby代码。这可能是因为我错误地安装了Ruby gem或因为我使用action="mechanize.rb"错误地调用了.rb文件吗?

1 个答案:

答案 0 :(得分:2)

您的方法不标准,需要更多工作。

表单操作是将向其提交表单数据的URL。有些东西需要等待接受HTTP请求并返回您想要的文档。发生的事情是您的Web服务器收到&#34; mechanize.rb&#34;的请求,它知道处理此请求的唯一方法是返回文件的内容。

要运行Ruby代码,您需要类似Web应用程序框架的东西 - 在这种情况下,Rails是显而易见的选择。因此,您可以重写表单以使用类似&#34; / mechanize&#34;的URL,并确保有一个控制器来处理该请求。控制器将使用类似mechanize.rb的代码获取表单数据并生成一些输出,但使用视图来呈现输出。