【发布时间】:2018-02-25 01:55:25
【问题描述】:
我正在尝试使用 Vacuum gem (v. 2.0.2) 从亚马逊请求信息。但是,我不确定我应该如何返回我得到的结果。目前,我已经为我的方法制作了这段代码:
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这行了吗?该行之后的所有内容都不会执行。 -
好的。我已经更新了代码。
-
但是我如何才能返回所有我发现存在的变量呢?然后如何在我的控制器中实现它?
标签: ruby-on-rails ruby scope