У меня есть упражнения, где я должен использовать API, используя HTTParty, чтобы показать больше информации о фильмах. Когда в заглавном фильме есть два или более слов, происходит сбой, поскольку между каждым словом добавляется «% 20».
Является ли лучший способ использовать API ниже, чем я? Я думаю, что мое решение не совсем сложное. Мое решение основано на одном из эпизодов GoRails.
Информация должна поступать из API, и я не могу сохранить эти данные в базе данных. Вывод API выглядит следующим образом:
{"data":{"id":"5","type":"movie","attributes":{"title":"Inglourious
Basterds","description":"In Nazi-occupied France during World War II, a
plan to assassinate Nazi leaders by a group of Jewish U.S. soldiers
coincides with a theatre owner's vengeful plans for the
same.","rank":8.3,"poster":"/inglourious_basterds.jpg"}}}
movie_details.rb
class MovieDetails
include HTTParty
base_uri "https://fakeaddress-api.com/api/v1/movies"
def self.title(title)
get("/#{title}.json").parsed_response["data"]["attributes"]["title"]
end
def self.description(title)
get("/#{title}.json").parsed_response["data"]["attributes"]["description"]
end
def self.poster(title)
get("/#{title}.json").parsed_response["data"]["attributes"]["poster"]
end
def self.rank(title)
get("/#{title}.json").parsed_response["data"]["attributes"]["rank"]
end
end
movies_controller.rb
def show
@movie = Movie.find(params[:id])
@description = MovieDetails.description(@movie.title.split.join(""))
@rank = MovieDetails.rank(@movie.title.split.join(""))
@poster = MovieDetails.poster(@movie.title.split.join(""))
end
Когда в заголовке есть два слова, ссылка: https://fakeaddress -api.com / api / v1 / movies / Inglourious% 20Basterds - для фильма «Бесславные ублюдки».