2016-06-05 5 views
0

나는 데이터베이스로 postresql을 사용하고 원하는 정보를 찾기 위해 'googlebooks'보석을 사용하여 sinatra에 라이브러리를 구축하고 있습니다.Google 북에서 정의되지 않은 메소드

이이 내 ERB 파일입니다

get '/list' do 
    @books = GoogleBooks.search(params[:title]) 
    erb :list 
end 

get '/info/:isbn' do 
    #this is to get the info from my database if there is any 

    if book = Book.find_by(isbn: params[:isbn]) 
    @book_title = book.title 
    @book_authors = book.author 
    @book_year = book.year 
    @book_page_count = book.page_count 
    @book_id = book.id 
    @book_isbn = book.isbn 
    else 
    #use the gem to look for the data 

    text = GoogleBooks.search(params[:isbn]) 
    @book_title = text.title 
    @book_author = text.authors 
    @book_year = text.published_date 
    @book_cover = text.image_link(:zoom => 2) 
    @book_page_count = text.page_count 
    @book_notes = text.description 
    #and then store it into the database 

    book = Book.new 
    book.title = @book_title 
    book.authors = @book_authors 
    book.publish_date = @book_year 
    book.image_link = @book_cover 
    book.page_count = @book_page_count 
    book.description = @book_notes 
    book.isbn = params[:isbn] 
    book.save 
    @book_id = book.id 

    end 

erb :info 
end 

main.rb 내 코드입니다 : 목록

<div class='list_by_title'> 
    <% @books.each do |text| %> 
    <ul> 
     <li class='list_by_title'> 
     <a href="/info/<%= text.isbn_10 %>"><%= text.title %> (Authour: <%= text.authors %>)</a> 
     </li> 

    </ul> 
    <%end%> 
</div> 

부분은 내가 목록 페이지를 가질 수 있어요 .. 작품 목록 가능성에 대한

NoMethodError at /info/0596554877 
undefined method `title' for #<GoogleBooks::Response:0x007ff07a430e28> 

어떤 생각 : 제목의 ... 문제는 내가 PARAMS의 ISBN에서 데이터를 호출 할 때, 난 항상이 오류가있다 해결책?

+0

당신이 로그인 할 수 있습니다 쉽게 디버깅, 적절한 변수 이름을 선택할 수있게해야 할 좋은 이름이 아닙니다 API에서받은 JSON을 확인하고 잘못된 점을 확인하십시오. –

답변

0

documentation에 따라 GoogleBooks::Response은 열거 자입니다. 따라서 each을 사용하여 반복을 수행하고 열거 자에서 검색 한 개별 개체에 title 메서드를 호출해야합니다. 책에 대한 자세한 내용은


result = GoogleBooks.search(params[:isbn]) 
result.each do |text| 
    @book_title = text.title 
    ... 
end 

변수 이름 text, 당신은 많은 시간 좋은 변수 이름

+0

정말 고마워요 !!! –