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

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

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

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

Ruby on Rails

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

Q&A

解決済

1回答

7714閲覧

rails erbテンプレートで動画の埋め込みを行えない

cheeeeeeese

総合スコア179

Ruby

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

Ruby on Rails

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

1グッド

3クリップ

投稿2015/07/30 22:14

お疲れ様です、質問させていただきます。よろしくお願い申し上げます。

今回Railsのサイトにyoutubeの動画を埋め込みたいと考え、ググってコードを見つけたまでは良いのですが、
Railsのerbテンプレートに合わせたコードの記法がわからず大変困っています。

質問内容
1 下記コードのerbテンプレートに合わせた記法が知りたい。

それでは よろしくお願い申し上げます。

失礼致します。

index.html.erb

<div class="youtube-container"> <iframe id="player" type="text/html" width="640" height="390" src="https://www.youtube.com/watch?v=h-5vS8F7VtE" frameborder="0"></iframe> </div>

xxxx.scss

// youtube responsive .youtube-container { position: relative; padding-bottom: 56.25%; padding-top: 30px; height: 0; overflow: hidden; } .youtube-container iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
daikitakaya👍を押しています

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

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

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

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

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

rifuch

2015/07/31 01:43

この質問では、何が知りたいのかわからないです。html.erbファイルは普通のHTMLはHTMLとして処理するので、そのままで表示できますが、Railsを使うと言うことは、何かを動的に表示したいということでしょうから、そのあたりの情報を質問に加えてみてください。
guest

回答1

0

ベストアンサー

動画の埋め込みコード

lang

1<div class="youtube-container"> 2 <iframe id="player" type="text/html" width="640" height="390" src="<%= "https://www.youtube.com/watch?v=#{@movie_id}" %>" frameborder="0"></iframe> 3</div>

のように、動画の参照を変更できるように変更しつつ、埋め込みの設定をすることができるとおもいます
(ERB に不慣れなため 文法エラーなどあるかもしれません)


しかし、せっかくRails を利用しているのですから、そちらで用意されているメソッドを利用したほうが良いでしょう

コード:

lang

1<% iframe = content_tag( 2 :iframe, 3 '', # empty body 4 width: 560, 5 height: 315, 6 src: "https://www.youtube.com/embed/#{@movie_id}", 7 frameborder: 0, 8 allowfullscreen: true 9) %> 10<%= content_tag(:div, iframe, class: 'youtube-container') %>

出力:

lang

1<div class="youtube-container"><iframe width="560" height="315" src="https://www.youtube.com/embed/h-5vS8F7VtE" frameborder="0" allowfullscreen="allowfullscreen"></iframe></div>

ヘルパーメソッド

前述のコードをヘルパーメソッドへ移行・利用することで、ビューでのコードを簡潔に記述することができるようになります
(movies コントローラを生成し利用しているとみなして記述しています)

ヘルパーメソッドの定義:

  • app/helpers/movies_helper.rb

lang

1module MoviesHelper 2 def movie(opts) 3 iframe = content_tag( 4 :iframe, 5 '', # empty body 6 width: 560, 7 height: 315, 8 src: "https://www.youtube.com/embed/#{opts[:movie_id]}", 9 frameborder: 0, 10 allowfullscreen: true 11 ) 12 content_tag(:div, iframe, class: 'youtube-container') 13 end 14end

ヘルパーメソッドの利用:

  • app/views/movies/index.html.erb

lang

1<%= movie(movie_id: 'h-5vS8F7VtE') %>

(今回はsrc のみ指定可能にしましたが、もちろん他の要素を可変状態に変更してもいいでしょう)

埋め込みコードのパラメータ

URL の部分、
https://www.youtube.com/watch?v=と記述されていますが、そちらでは動作しませんでした
https://www.youtube.com/embed/ と記述することで動画の埋め込みが動作しました

以上、何か参考になれば幸いです

Links

投稿2015/07/31 08:54

gouf

総合スコア2321

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

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

cheeeeeeese

2015/07/31 09:26

gouf様、 詳しくお教え頂き本当にありがとうございます。 それでは失礼致します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問