質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

Q&A

2回答

2609閲覧

APIを利用して、映画の作品名を検索しい検索結果を表示したい

Kassy11

総合スコア26

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

1グッド

3クリップ

投稿2019/05/19 08:05

現在Ruby on Railsで、映画を検索しその検索結果を表示するものを、gem 'themoviedb-api'というラッパーを用いて実装しています。

自分なりに実装してみたところ、検索結果が何も返ってこず、原因がわからないため質問させていただきます。
原因が分かる方がいらっしゃれば、ご回答よろしくおねがいします。

themoviedb-api

moviescontroller

1class MoviesController < ApplicationController 2 require 'themoviedb-api' 3 Tmdb::Api.key("") 4 5 def search 6 end 7 8 def index 9 @movies = Tmdb::Search.movie(params[:search]) 10 end 11 12 def show 13 end 14 15end 16

searchhtml

1<h3>作品名で検索</h3> 2 <%= form_tag(controller:"movies",action:"index") do %> 3 <%= text_field_tag :search %> 4 <%= submit_tag '検索',:name => nil %> 5 <% end %> 6

indexhtml

1<h1 class="text-center font-weight-bold">検索結果</h1> 2<!-- 検索結果があるとないときで分けたい --> 3<% if @movies.any?%> 4<div class="search-results"> 5 <% @movies.each do |movie| %> 6 <div class="search-info"> 7 <%= movie.name%> 8 </div> 9 <%end%> 10</div> 11<%else%> 12 <h1>なし</h1> 13<%end%> 14

routing

1 get 'movies/search' => 'movies#search' 2 post 'movies/index' => 'movies#index' 3
DrqYuto👍を押しています

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

このAPI、「スターウォーズ」等でも同じことが起こります。
ナカグロがあるタイトルはほとんど必須と考えてよいかと。

ハリーポッターで検索した結果:

{ "page": 1, "results": [], "total_pages": 0, "total_results": 0 }

ハリー・ポッターで検索した結果:

{ "page": 1, "results": [ { "adult": false, "backdrop_path": "/5rrGVmRUuCKVbqUu41XIWTXJmNA.jpg", "genre_ids": [ 12, 14, 10751 ], "id": 674, "original_language": "en", "original_title": "Harry Potter and the Goblet of Fire", "overview": "ホグワーツ魔法魔術学校の4年生になったハリー・ポッター。今年ホグワーツで伝説の“三大魔法学校対抗試合”が行われることになり、他校の生徒たちが大挙してやってきた。", "popularity": 174.472, "poster_path": "/q2HYM9ysU8ymSmjq40FDFumWanR.jpg", "release_date": "2005-11-16", "title": "ハリー・ポッターと炎のゴブレット", "video": false, "vote_average": 7.8, "vote_count": 18146 }, { "adult": false, "backdrop_path": "/urDWNffjwmNi5IQaezw9GwqkUXa.jpg", "genre_ids": [ 12, 14 ], "id": 767, "original_language": "en", "original_title": "Harry Potter and the Half-Blood Prince", "overview": "ヴォルデモート卿の支配力が強大になっていくなか、ハリーとダンブルドア校長は、ヴォルデモートの防御を解く手がかりを探るため、極めて重要な情報を握っているダンブルドアの旧友で元同僚ホラス・スラグホーンを学校に迎え入れる。", "popularity": 187.971, "poster_path": "/kEUxWWjQ5qJwblc24SHXxDLcJUV.jpg", "release_date": "2009-07-07", "title": "ハリー・ポッターと謎のプリンス", "video": false, "vote_average": 7.7, "vote_count": 17003 }, { "adult": false, "backdrop_path": "/1stUIsjawROZxjiCMtqqXqgfZWC.jpg", "genre_ids": [ 12, 14 ], "id": 672, "original_language": "en", "original_title": "Harry Potter and the Chamber of Secrets", "overview": "ハリーは学校での最初の1年を終え、夏休みをダーズリー一家のもとで過ごしていた。ハリーが相変わらず意地悪な一家に嫌気がさしていたある日、突然ドビーという“屋敷しもべ妖精”が現れる。ドビーはホグワーツへ戻らないよう警告するが、ハリーはそれを聞かずに、助けに来てくれたロンと共にダーズリー家を抜け出した。そして新学期。晴れて2年生となったハリーとロンは、もうひとりの親友ハーマイオニーとも再会し、いつもの充実した学校生活を送っていたが、やがて校内で不気味な出来事が次々と起こり始める…。", "popularity": 164.987, "poster_path": "/dkXHb4wgeAILthlza3bweYc6CVQ.jpg", "release_date": "2002-11-13", "title": "ハリー・ポッターと秘密の部屋", "video": false, "vote_average": 7.7, "vote_count": 19176 }, { "adult": false, "backdrop_path": "/5jkE2SzR5uR2egEb1rRhF22JyWN.jpg", "genre_ids": [ 12, 14 ], "id": 671, "original_language": "en", "original_title": "Harry Potter and the Philosopher's Stone", "overview": "両親の死後、親戚の家に預けられたハリー・ポッター少年。そこでは階段下の物置部屋をあてがわれ、何かとこき使われる毎日。そんなある日、ハリーの11歳の誕生日に一通の手紙が届いた。中身はなんと、魔法魔術学校の入学許可証だった。実は、ハリーの両親は優秀な魔法使いだったのだ。手紙に導かれるままホグワーツ魔法魔術学校にたどり着いたハリーは、さっそく魔法使いになるための勉強を始める。ロンとハーマイオニーという友達もでき、楽しい毎日を送るハリーだったが、やがて学校に隠された驚くべき秘密に気づくのだった……。", "popularity": 166.886, "poster_path": "/9jTON3Mifyojgw0gYO90WyRaXtq.jpg", "release_date": "2001-11-16", "title": "ハリー・ポッターと賢者の石", "video": false, "vote_average": 7.9, "vote_count": 23847 }, { "adult": false, "backdrop_path": "/obKmfNexgL4ZP5cAmzdL4KbHHYX.jpg", "genre_ids": [ 12, 14 ], "id": 673, "original_language": "en", "original_title": "Harry Potter and the Prisoner of Azkaban", "overview": "その名を聞くだけで誰もが震え上がるアズカバン刑務所。そこには史上最強の凶悪犯と言われるシリウス・ブラックが収監されていた。ところが彼は脱獄し、しかもハリーの命を狙っているという……。", "popularity": 159.279, "poster_path": "/mCvffvxNZVZIvkGm4z1iKGXTEBQ.jpg", "release_date": "2004-05-31", "title": "ハリー・ポッターとアズカバンの囚人", "video": false, "vote_average": 8, "vote_count": 18846 }, { "adult": false, "backdrop_path": "/sO2VWeJ8qagNtYoznyLRL8TeSkw.jpg", "genre_ids": [ 12, 14, 9648 ], "id": 675, "original_language": "en", "original_title": "Harry Potter and the Order of the Phoenix", "overview": "ホグワーツ魔法魔術学校の5年生になったハリーは、最近、ヴォルデモート卿のうわさを聞かないことに気付く。そんな折、魔法省は学校にお目付役として新しく防衛術を教える教師を送り込む。その授業を不満に思ったハリーは親友のハーマイオニーらと“ダンブルドア軍団”を結成する。", "popularity": 152.145, "poster_path": "/pjQHDhPYfXnTgVvFkCB558NtAaJ.jpg", "release_date": "2007-06-28", "title": "ハリー・ポッターと不死鳥の騎士団", "video": false, "vote_average": 7.7, "vote_count": 17170 }, { "adult": false, "backdrop_path": "/8rft8A9nH43IReybFtYt21ezfMK.jpg", "genre_ids": [ 99 ], "id": 899082, "original_language": "en", "original_title": "Harry Potter 20th Anniversary: Return to Hogwarts", "overview": "『ハリー・ポッターと賢者の石』公開20周年を記念した「ハリポタ」初の同窓会!ダニエル・ラドクリフ、エマ・ワトソン、ルパート・グリントをはじめ、ゲイリー・オールドマン、ヘレナ・ボナム=カーター、レイフ・ファインズ、トム・フェルトン、クリス・コロンバス、アルフォンソ・キュアロンなど、歴代キャスト・監督が続々登場。今だからこそ話せる「ハリー・ポッター」の知られざる舞台裏、それぞれの想い…。映画史上最も愛されている映画シリーズを語り尽くす。", "popularity": 80.097, "poster_path": "/AgswVUJNnl5H4jltUa2Rj6krsfa.jpg", "release_date": "2022-01-01", "title": "ハリー・ポッター20周年記念:リターン・トゥ・ホグワーツ", "video": false, "vote_average": 7.3, "vote_count": 2607 }, { "adult": false, "backdrop_path": "/vcrgU0KaNj5mKUCIQSUdiQwTE9y.jpg", "genre_ids": [ 12, 14 ], "id": 12444, "original_language": "en", "original_title": "Harry Potter and the Deathly Hallows: Part 1", "overview": "物語はハリー、ロン、ハーマイオニーに課せられた使命であるヴォルデモート抹殺の鍵を握る“分霊箱”を見つけ出すところから始まる。今や守ってくれる人も、導いてくれる師も失い、これまで以上に固い結束を求められるハリーたち。しかし、闇の力が、しっかりと結ばれたはずの3人の絆を引き裂いていく・・・・・。\r 一方、かつてないほど危険な場所となった魔法界。長いあいだ恐れられてきたヴォルデモート卿の復活が現実のものとなり、魔法省ばかりか、ホグワーツ魔法魔術学校までもが死喰い人の支配下に置かれた今、安全な場所はもはやどこにもなくなった。ヴォルデモート卿の命令により、ハリーを生け捕りにしようとする死喰い人の魔の手が迫る。\r そして、分霊箱の手がかりを探すうちに出会った「死の秘宝」の伝説。ほとんど忘れられた古い物語に記されたその伝説が本当なら、ヴォルデモートは、分霊箱を上回る究極の力を手に入れてしまうかもしれない・・・・・。\r ハリーはまったく知らないが、彼の未来は、彼自身の過去によってすでに決められているのだ。“生き残った男の子”になった日に、ハリーの運命は決まった。\r 初めてホグワーツの門をくぐったあの日からずっと積み重ねてきた準備―――それらはすべて、このヴォルデモートとの決着の日のために・・・・・。", "popularity": 150.075, "poster_path": "/29XrnOqfSjAgKO5efwT4lbPF6c0.jpg", "release_date": "2010-10-06", "title": "ハリー・ポッターと死の秘宝 Part1", "video": false, "vote_average": 7.8, "vote_count": 16809 }, { "adult": false, "backdrop_path": "/n5A7brJCjejceZmHyujwUTVgQNC.jpg", "genre_ids": [ 14, 12 ], "id": 12445, "original_language": "en", "original_title": "Harry Potter and the Deathly Hallows: Part 2", "overview": "魔法界における善と悪の間で起こる戦いは本格的な交戦へとエスカレートする。この争いは今までで最も危険なものであり、もはや誰の身も安全ではない。しかしながらヴォルデモートとの最終決戦の時、最後の犠牲を払わなければならないのはハリー・ポッターなのである。\r そして、ここに全てが終結する。", "popularity": 156.133, "poster_path": "/nQVvD3wefSUaXGVWtQozIv42NmE.jpg", "release_date": "2011-07-07", "title": "ハリー・ポッターと死の秘宝 Part2", "video": false, "vote_average": 8.1, "vote_count": 18138 } ], "total_pages": 1, "total_results": 9 }

投稿2023/01/12 21:52

rygg

総合スコア2

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Tmdb::Api.key("")に値はセットされましたか?
ぱっと見ですが、getのリクエストでも、キーが必要なようです。

投稿2019/05/19 17:57

urbainleverrier

総合スコア200

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

Kassy11

2019/05/20 00:58

それは設定しています。セキュリティのため空白にしてあります。
urbainleverrier

2019/05/20 04:21

paramsとmoviesは正しく出力できていますか? ``` def index logger.debug(params[:search]) # params[:search]をログに出力 @movies = Tmdb::Search.movie(params[:search]) logger.debug(@movies) # @moviesをログに出力 end ``` strong parameterかもしれません
Kassy11

2019/05/22 14:11

Started POST "/movies/index" for ::1 at 2019-05-22 23:07:36 +0900 Processing by MoviesController#index as HTML Parameters: {"utf8"=>"?", "authenticity_token"=>"rhStMxEYr74GbiZDRNAU+AmaKz6zele06M4mFjNSyIAYNeKKjc4PJZbEPJzaP/KF0MWmRtFR9R/pJzP5732bgA==", "search"=>"ハリーポッター"} ハリーポッター #<Tmdb::Result page=1, total_results=0, total_pages=1, results=[]> Rendering movies/index.html.erb within layouts/application Rendered movies/index.html.erb within layouts/application (0.8ms) User Load (0.2ms) SELECT "users".* FROM "users" WHERE "users"."id" = ? ORDER BY "users"."id" ASC LIMIT ? [["id", 16], ["LIMIT", 1]] ? app/views/layouts/application.html.erb:21 Completed 200 OK in 999ms (Views: 404.9ms | ActiveRecord: 0.2ms) コンソールでは上記のような結果になりました。 paramsは取得できているようなのですが、検索ができていないということでしょうか??
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問