진공 보석 (v. 2.0.2)을 사용하여 Amazon에서 정보를 요청하려고합니다. 그러나 나는 내가 얻은 결과를 어떻게 돌려 보내야할지 확신하지 못한다. 현재, 내 방법이 코드를 만들었 :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' 줄이 보입니까? 그 라인 이후의 모든 것은 결코 실행되지 않습니다. –
확인. 나는 코드를 업데이트했다. –
그러나 내가 찾은 모든 변수를 반환하도록하려면 어떻게해야합니까? 그런 다음 컨트롤러에서 어떻게 구현합니까? –