Rails:即使在false if语句中运行NilClass的未定义方法

时间:2013-07-10 21:24:22

标签: ruby-on-rails

我有两种型号:图像和视频。图像有时属于视频,但并非总是如此,但视频始终属于图像(这是因为我为上传到网站的视频生成缩略图图像,但用户也可以上传常规图像有一个相关的视频)。

在我看来,我浏览了所有图像并检查是否有任何图像有关联的视频。如果是,那么它应该根据视频的属性“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 %>

1 个答案:

答案 0 :(得分:2)

你的if(false)是Javascript,而不是Ruby - 在渲染模板时,它不会对实际执行的内容产生任何影响。 &lt;%...%&gt;中的任何内容是什么运行服务器端,这是你在这里遇到的问题。