私は私が言われたRuby理論をもっと読む必要があります。それは素晴らしいですが、私が読んだほとんどの文献は非常に高いレベルで説明されており、私はそれを理解していません。だからこれは私を質問と私のコードに導きます
API呼び出しを処理するモジュールがあります
module Book::BookFinder
BOOK_URL = 'https://itunes.apple.com/lookup?isbn='
def book_search(search)
response = HTTParty.get(BOOK_URL + "#{search}", :headers => { 'Content-Type' => 'application/json', 'Accept' => 'application/json' })
results = JSON.parse(response.body)["results"]
end
end
そして私のコントローラー
class BookController < ApplicationController
before_filter :authenticate_admin_user!
include Book::BookFinder
def results
results = book_search(params[:search])
@results = results
@book = Book.new
@book.author = results[0]["artistName"]
end
def create
@book = Book.new(params[:book])
if @book.save
redirect_to @book, notice: 'Book was successfully saved'
else
render action:new
end
end
end
私がやりたいのは、著者の値を私のBookモデルに保存することです。エラーメッセージが表示されます
undefined method `new' for Book:Module
以前の投稿で私に説明された検索を行うとき。モジュールをインスタンス化することはできません。解決策はクラスを作ることでしたか?しかし、このクラスをどこに置くべきかわからないので、正しく理解していないのかもしれません。私に与えられた解決策は
class Book
def initialize
# put constructor logic here
end
def some_method
# methods that can be called on the instance
# eg:
# @book = Book.new
# @book.some_method
end
# defines a get/set property
attr_accessor :author
# allows assignment of the author property
end
これは有効な答えだと確信していますが、何が起こっているのか誰かが説明できますか?説明付きの例を見ることは、本の行やテキストの行を読むよりも私にとって有益です。