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 を持つ) の標準フォーム、モデル、コントローラーを使用しています。