LoginSignup
1
1

More than 3 years have passed since last update.

ネストしたindexにYoutube動画埋め込み

Posted at

ネストしたindexへの動画埋め込み備忘録

https://qiita.com/Kairi_Yasunnde/items/8e931a4670549ba8237e
上記の記事を参考にしたが、自分はgroupテーブルにYoutube_urlを入れてcreateに定義し、groupでネストしたmessages/indexに埋め込もうとして、コントローラーの差異があり出来なかったと推測する。

routes.rb
  resources :groups, only: [:new, :create, :edit, :update, :show, :destroy] do
    resources :messages, only: [:index, :create, :destroy]
  end

なのでYoutube_urlを生値のまま取り出し、ビュー上で末尾11桁をとり出すようにした。
※Youtubeは末尾11桁の文字、数字が各動画に割り当てられている。

手順

まずは、groupにYoutube_urlのカラムを追加する。
ターミナル上で、groupテーブルにyoutube_urlをstring型でカラムを追加。↓

rails g migration AddYoutube_urlToGroups youtube_url:string

追加後、rails db:migrateで実行

次に、コントローラーでYoutube_urlの値をpermitで許可する↓

groups_controller.rb
  private
  def group_params
    params.require(:group).permit(:name, :image, :content, :youtube_url, user_ids: [])
  end

createまたはupdateアクションでurlをテーブルに入れたいのでフォームを作る↓
※_formはnewとeditアクションの部分テンプレート

groups/_form.html.erb
<%= f.text_field :youtube_url, class: "form-control", placeholder: "Youtube_url" %>

そして、ビュー上で末尾11桁の値をlastメソッドで取り出し、Youtube動画埋め込みのテンプレートにはめこむ↓
<%=(@groups.youtube_url).last(11)%>の部分

messages/index.html.erb
<iframe width="560" height="315" src="https://www.youtube.com/embed/<%=(@groups.youtube_url).last(11)%>" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>

以上で埋め込み完了
createまたはupdateアクションで入力したurlの動画が埋め込まれる

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1