LoginSignup
0
0

More than 1 year has passed since last update.

投稿のコメントにYoutubeのURLを入れ込む方法

Posted at

今回はユーザーが投稿した投稿にコメントをする際にYoutubeのURLを埋め込む方法を紹介します。

投稿のコントローラー:favorite(普段自分が使っているコントローラー)
コメントのコントローラー:comment

①commentsテーブルにyoutube_urlカラムを追加します。

コマンドプロンプト
rails generate migration AddYoutube_urlToComments youtube_url:string
コマンドプロンプト
rails db:migrate

②commentコントローラーに、コメント内でYoutubeのURLを埋め込むためのコードを書きます。

app/controller/comments_controller.rb
def create
    favorite = Favorite.find(params[:favorite_id])
    comment = favorite.comments.build(comment_params) 
    comment.user_id = current_user.id
#ここまでは教材でできているはず!だから特に変えなくていいよ!
    url = params[:comment][:youtube_url]
        url = url.last(11)
        comment.youtube_url = url
#変更する所は上の3行だけ!
    if comment.save
      flash[:success] = "コメントしました"
      redirect_back(fallback_location: root_path) 
    else
      flash[:success] = "コメントできませんでした"
      redirect_back(fallback_location: root_path) 
    end
  end

③コメント投稿をするときにYoutube_urlを受け取るために以下のコードを書きます。

app/controller/comments_controller.rb
private

    def comment_params
      params.require(:comment).permit(:content, :youtube_url)#youtube_urlを追加
    end

④viewページにyoutubeの動画を入れる&表示させるためのコードを挿入

app/views/favorites/show.html.erb
#省略
<div class="comment-wrapper">
  <p>コメント一覧</p>
  <% @comments.each do |c| %>
    <div>
      <%= c.user.email unless c.user.blank? %>
      <br>
      <%= c.content %>
      <br>

      
      <% if c.youtube_url? %> #ここから
      <p><iframe width="560" height="315" src="https://www.youtube.com/embed/<%=c.youtube_url%>" frameborder="0" allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>
      <% end %> #ここまでを追加

    </div>
      <br>
  <% end %>

  <% if user_signed_in? %>
    <%= form_with(model: [@favorite, @comment], local: true) do |f| %>
      <%= f.text_area :content %>
      <%= f.text_field :youtube_url, :size => 140 %><br> #この1行を追加
      <%= button_tag type: "submit" do %>
        <i class="far fa-comments"></i> コメントする
      <% end %>
    <% end %>
  <% end %>
</div>

これでできるはず!以下の写真みたいになります!!(著作権の問題で動画表示できてないけど、、、笑)スクリーンショット (309).png

0
0
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
0
0