0

画像とビデオの 2 つのモデルがあります。画像はビデオに属する場合もありますが、常にではありませんが、ビデオは常に画像に属します (これは、サイトにアップロードされるビデオのサムネイル画像を生成するためですが、ユーザーは通常の画像をアップロードすることもできます。関連付けられたビデオがあります)。

私の見解では、すべての画像を調べて、いずれかの画像に関連するビデオがあるかどうかを確認します。その場合、動画の属性「embed_url」に基づいて何かを作成する必要があります。

コードを実行しようとすると、エラーが発生し続けました。

undefined method `embed_url' for nil:NilClass

理由がわからなかったので、if ステートメント :if(false)" を作成しましたが、コードが if ステートメントのその部分に到達してはならないにもかかわらず、エラーが発生します。何が間違っていますか?

<% step.images.order("position").each_with_index do |image, index| %>

    <% Rails.logger.debug "image #{image.id}"%>

      <script type="text/javascript">
      <% has_video = !image.video.blank? %>

      <% Rails.logger.debug "image #{image.id} has_video: #{has_video}"%>
       var has_video = Boolean(<%=has_video%>);

        // add step images to carousel
        if(<%=index%>==0){

          if(false){
              $('.carousel-inner.<%=step.id%>').append('<div class="item active">
              <div class="flex-video"> <a class="fancybox" href="<%=**image.video.embed_url**%>" rel="gallery <%=step.id%>" data-fancybox-type="iframe"><iframe src="<%=image.video.embed_url%>" id="<%=image.id%>"></iframe></a></div></div>'); 
          }
          else{
           $('.carousel-inner.<%=step.id%>').append('<div class="item active"><a class="fancybox" href="<%=image.image_path_url%>" rel="gallery <%=step.id%>" data-fancybox-type="image"> <%=image_tag(image.image_path_url(:preview), :width => "100%", :id=> image.id)%></a></div>');    
          } 
...
      <% end %>
4

1 に答える 1

2

if(false)Ruby ではなく Javascript です。テンプレートがレンダリングされている間は、実際に実行される内容には影響しません。<% ... %> 内のすべてがサーバーサイドで実行されるものであり、ここで問題が発生しているものです。

于 2013-07-10T21:28:47.223 に答える