私はAmazonからvacuum gem(v。2.0.2)を使用して情報を要求しようとしています。しかし、私はどのように私が得た結果を返すことになっているのか分かりません。現在、私は自分のメソッドにこのコードを作っています:Rubyモデルで変数を返さないメソッド
def self.isbn_lookup(val)
request = Vacuum.new('US')
request.configure(
aws_access_key_id: 'access_key_goes_here',
aws_secret_access_key: 'secret_key_goes_here',
associate_tag: 'associate_tag_goes_here'
)
response = request.item_lookup(
query: {
'ItemId' => val,
'SearchIndex' => 'Books',
'IdType' => 'ISBN'
},
persistent: true
)
fr = response.to_h #returns complete hash
if fr["ItemLookupResponse"]["Items"]["Item"]["ItemAttributes"]["Author"]
@author = fr.dig("ItemLookupResponse","Items","Item","ItemAttributes","Author")
end
if fr["ItemLookupResponse"]["Items"]["Item"]["ItemAttributes"]["Author"]
@title = fr.dig("ItemLookupResponse","Items","Item","ItemAttributes","Title")
end
if fr["ItemLookupResponse"]["Items"]["Item"]["ItemAttributes"]["Manufacturer"]
@manufacturer = fr.dig("ItemLookupResponse","Items","Item","ItemAttributes","Manufacturer")
end
if fr["ItemLookupResponse"]["Items"]["Item"]["ItemAttributes"][6]["URL"]
@url = fr.dig("ItemLookupResponse","Items","Item","ItemLinks","ItemLink",6,"URL")
end
end
このメソッドで作成した変数をコントローラで使用できるようにしたいと思います。コントローラの著者、タイトル、製造元、およびURLのインスタンス変数にどのようにアクセスできますか?ユーザーがISBNを入力すると、サーバーにAJAXリクエストを送信して関連情報(作成者、タイトルなど)を要求するようにしたいと考えています。
def create
@listing = Listing.new(listing_params)
@listing.user = current_user
if @listing.save
flash[:success] = "Your listing was successfully saved."
redirect_to listing_path(@listing)
else
render 'new'
end
end
def edit
@isbn = Listing.isbn_lookup(1285741552)
end
インスタンス変数は決して設定されません。 'return fr'という行がありますか?その行の後のすべてが決して実行されません。 –
私はコードを更新しました。 –
しかし、どのように私はそれが私が存在するすべての変数を返すようにするのですか?そして、それを私のコントローラーにどう実装するのですか? –