rails NoMethodError in Farmers#indexを解消したい
エラーを解消してyoutube投稿機能を実装させたいです。
前提
rails 6.1.3.1でアプリでyoutube投稿機能を実装させる途中で、ヘルパーにコードを書いたところ表題のエラーが発生してしまい解決方法を探しています。
発生しているエラーメッセージ
NoMethodError in Farmers#index
Showing /home/ubuntu/environment/minnanofarm/app/views/farmers/index.html.erb where line #59 raised:
undefined method `include?' for nil:NilClass
###該当のコード(app/controllers/helpers/famers_helper.rb)
module FarmersHelper def find_youtube_url(youtube_url) if youtube_url.include?("https://youtu.be/") #ここが59行目# binding.pry youtube_url.strip!.gsub("https://youtu.be/", "") # "https://youtu.be/WGiUk8VakxQ" 11桁のyoutubeのURLが出力されるようにする else youtube_url.strip!.gsub("https://www.youtube.com/watch?v=", "") # "https://www.youtube.com/watch?v=WGiUk8VakxQ" 11桁のyoutubeのURLが出力されるようにする end end end
###app/views/farmers/index.html.erb
<h1>働き手(Cast)を探す</h1> <div class="row"> <div class="col-sm-6 offset-sm-3"> <%= form_with(model: @work) do |f| %> <%= render 'layouts/error_messages', model: f.object %> <div class="mb-3"> <%= f.label :title, 'お仕事名' %> <%= f.text_field :title, class: 'form-control' %> </div> <div class="mb-3"> <%= f.label :description, 'お仕事詳細' %> <%= f.text_field :description, class: 'form-control' %> </div> <div class="mb-3"> <%= f.label :work_type, '作業種別' %> <%= f.select :work_type, ["準備・片付け","定植", "収穫","出荷","その他"], class: 'form-control' %> </div> <div class="mb-3"> <%= f.label :work_date, '作業日' %> <%= f.date_field :work_date, class: 'form-control' %> </div> <div class="mb-3"> <%= f.label :recruitment, '募集人数' %> <%= f.text_field :kana, class: 'form-control' %> </div> <div class="mb-3"> <%= f.label :youtube_url %> <%= f.text_field :youtube_url, :size => 140 %> </div> <div class="mb-3"> <%= f.label :body %> <%= f.text_field :body,class: 'form-control' %> </div> <%= f.submit '登録', class: 'btn btn-primary' %> <% end %> </div> <!-- col-sm-6 offset-sm-3 --> </div> <!-- row --> <div class="row mt-4"> <% if @works.any? %> <% @works.each do |work| %> <div class="col-md-4"> <%= work.title %><br> <%= work.work_date %><br> <%= work.work_type %><br> <% if work.youtube_url.present? %> <iframe width="560" height="315" src="https://www.youtube.com/embed/<%= find_youtube_url(work.youtube_url) %>" title="YouTube video player" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe> </div> <% end %> <% end %> </div> <!-- row -->
試したこと
①エラーコードを読みincludeに原因がありと当たりをつけpryを試すも
[3] pry(#<#Class:0x00007f1e84947e48>)> include?
NoMethodError: undefined method `include?' for #ActionView::Base:0x00000000007260と出てしまう
②<% if work.youtube_url.present? %>をfarmersのindex.html.erbに追加したらタイムアウトするようになってしまい。
現在手詰まりになってしまっています。
回答1件
あなたの回答
tips
プレビュー