我正在尝试创建一个提交按钮,该按钮将调用 ruby 脚本并执行它(该脚本采用 isbn 并 ping 第三方站点并根据输入返回信息)。具体来说,我有一个用于创建新书的表单,我需要用户提供的主要字段是 isbn。提交后,我想使用那个 isbn 并运行我的 ruby 脚本来检索数据并将其显示在下一页上。我尝试将 .rb 代码转移到辅助方法中,但我不确定我是否做得对,我不知道如何更改提交按钮的功能以执行任一方法或脚本 这是我的辅助方法
module PagesHelper
require 'httpclient'
require 'nokogiri'
def search(hash)
#class SearchBook
#def initialize(isbn)
# @isbn = isbn
#end
#puts "Enter ISBN: "
#isbn = gets.chomp
#def run
isbn = hash
conditions = ['Acceptable', 'BrandNew', 'Good', 'LikeNew', 'VeryGood']
client = HTTPClient.new
uri = 'https://svcs.ebay.com/services/half/HalfFindingService/v1?OPERATION- NAME=findHalfItems&REST-PAYLOAD'
count=0
conditions.each do |condition|
query = {
'X-EBAY-SOA-SERVICE-NAME' => 'HalfFindingService',
'SERVICE-VERSION' => '1.0.0',
'GLOBAL-ID' => 'EBAY-US',
'X-EBAY-SOA-SECURITY-APPNAME' => 'Compassi-3b25-406b-b3d6-d69ca7353053',
'RESPONSE-DATA-FORMAT' => 'XML',
'productID' => isbn,
'productID.@type' => 'ISBN',
'itemFilter' => 'Condition',
'itemFilter.name' => 'Condition',
'itemFilter.value' => condition,
'paginationInput.entriesPerPage' => '3',
'sortBy' => 'FixedPrice',
'sortBy.sortOn' => 'FixedPrice',
'sortBy.sortOrder' => 'INCREASING'
}
results = client.get_content(uri, query)
count += 1
doc = Nokogiri::XML.parse(results)
if count <= 1
puts "Book Details"
puts "--Title: "+doc.css("title").text
puts "--Author: "+doc.css("nameValueList/value").text
puts "Prices by Condition:"
end
puts "Condition: #{condition}"
prices = doc.css("price")
prices.each do |price|
puts "$#{price.text}"
end
end
#return count
#end
#end
end
end
我正在使用从 rails generate scaffold Book isbn:string condition:string title:string... 生成的 Book(具有 isbn)的标准表单、模型和控制器