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

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

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

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

Q&A

解決済

1回答

195閲覧

Rails has_many, belongs_toについて

gaijin

総合スコア30

Ruby on Rails

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

0グッド

0クリップ

投稿2019/05/02 13:43

編集2019/05/12 12:22

Ruby on Rails初心者です。
独学で学んでおります。
スポーツ選手の一覧を登録でき歴史やハイライトを表示できるwebサイトを作っております。
まず、最初のページにチーム一覧があり、そこからチームを取り出し選手などの概要をつけました。 has_many,belongs_toの関係にしております。
そこから選手の名前をクリックするとyoutubeのハイライト画面に飛ばすようにしたいのですがそこがうまくいかず困っています。

初心者なのでうまく説明できず申し訳ございません。
一度相互関係を作ったものから選手の名前を抜き出し個々にハイライトをつけたいと思っております。
色々と試しているのですが全く答えに行き着かずかなり苦戦しています。
どうか詳しい方ご教授いただけると助かります。

イメージ説明

何か必要なコードの記載があればすぐに追記いたします。
teams_controller.rb

class TeamsController < ApplicationController def index @teams = Team.all end def show @team = Team.find params[:id] end def new end def edit @team = Team.find params[:id] end def create @team = Team.new(team_params) @team.save redirect_to team_path(@team) end def update @team = Team.find params[:id] if @team.update(team_params) redirect_to @team else render 'edit' end end def destroy @team = Team.find params[:id] @team.destroy redirect_to team_path end def team_params params.require(:team).permit(:title, :body, :image) end end

players_controller.rb

class PlayersController < ApplicationController def index @team = Team.find params[:team_id] end def create @team = Team.find params[:team_id] @team.players.create(player_params) redirect_to team_path(@team) end def destroy @team = Team.find params[:team_id] @player = @team.players.find params[:id] @player.destroy redirect_to team_path(@team) end def player_params params.require(:player).permit(:name, :body, :image) end end

追記 players_controller.rb

class PlayersController < ApplicationController def show @player = Player.find params[:id] end def create @team = Team.find params[:team_id] @team.players.create(player_params) redirect_to team_path(@team) end def destroy @team = Team.find params[:team_id] @player = @team.players.find params[:id] @player.destroy redirect_to team_path(@team) end def player_params params.require(:player).permit(:name, :body, :image) end end

(players)show.html.erb

<h2>High Light</h2> <h3><%= @player.name %><br></h3> <iframe width="640" height="480" src="https://www.youtube-nocookie.com/embed/13YeR5zIGbo?start=109" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br> <%= link_to 'Player List', teams_path %>

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

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

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

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

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

guest

回答1

0

ベストアンサー

選手の名前をクリックしたらyoutubeのページにリンクするということでしょうか?
そういうことでしたら

  1. 各選手にyoutube_urlのようなカラムを作成し、各選手のリンクをDBに登録
  2. それを元にTeamsController#showにyoutubeへのリンク作成

自分のサイトの部分にyoutubeの動画を入れたいということでしたら

  1. PlayersControllershowアクションを作成
  2. 各選手にyoutube_urlのようなカラムを作成し、各選手のリンクをDBに登録
  3. TeamsController#showに各選手のPlayersController#showへのリンクを生成
  4. PlayersController#showにてiframeでyoutube_urlで動画を表示、選手の各プロフィールを表示

などの方法があると思います。

追記

show.html.erb

<h2>High Light</h2> <h3><%= @player.name %><br></h3> <iframe width="640" height="480" src="<%= @player.youtube_url %>" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe><br>

@player.youtube_urlに選手のユーチューブのurlを入れるところまでできたら、このようにsrcを設定してみましょう。
こうすることによってiframeに選手ごとに紐づいたURLが表示されるはずです。

投稿2019/05/02 14:10

編集2019/05/15 11:22
haneru

総合スコア440

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

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

gaijin

2019/05/02 14:16

早急な返信ありがとうございます。 夜勤の仕事で外にいるため明日の朝帰宅したらすぐに取り掛かります。
gaijin

2019/05/12 12:30 編集

返信遅くなってしまい申し訳ありません。 体調を崩してしまい2週間ほど寝込んでいました。。 こちら自分のサイトの部分にyoutubeの動画を入れているのですが、haneruさんの記述のように進めましてyoutube入れることができたのですが、各選手にyoutubeをつけるということがうまくできません。。 おそらく2ができていないと思います。。 コード追記いたしましたので、よろしければご確認いただければありがたく思います。
gaijin

2019/05/15 13:30

的確な返答ありがとうございます。 自分で調べながら色々と試していたのですが、より複雑になってしまいエラーが直らなくなってしまいました。。 もう一度初めからやり直しyoutubeの組み込みまでしたいと思います。 その際に試したいと思います。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問