辅助函数返回数组而不是fixNum

时间:2016-01-28 19:52:23

标签: ruby-on-rails ruby

我在Rails中的应用程序助手中定义了一个函数,它应该返回特定模型的id。但是,该函数返回一个具有单个类似哈希的元素的数组。

application_helper.rb:

module ApplicationHelper
  def singleton(documents) #this function works perfectly
    count = 0

    documents.each do |document|
      if ((document.extension == 'jpg') || (document.extension == 'jpeg') || (document.extension == 'png') || (document.extension == 'gif') || (document.extension == 'bmp'))
        count += 1
      end
    end

    return count
  end

  def getbanner(course) #this function is returning array some problem
    picid = -99
    storeval = singleton(course.documents)

    if (storeval == 0)
      picid = -99
    elsif (storeval == 1)
      course.documents.each do |document|
        if ((document.extension == 'jpg') || (document.extension == 'jpeg') || (document.extension == 'png') || (document.extension == 'gif') || (document.extension == 'bmp'))
          picid = document.id
        end
      end
    elsif (storeval > 1)
      course.documents.each do |document|
        if ((document.extension == 'jpg') || (document.extension == 'jpeg') || (document.extension == 'png') || (document.extension == 'gif') || (document.extension == 'bmp'))
          picid = document.id
          return picid
        end
        #return picid
      end
    end
  end 
end

我在erb模板中调用块内的函数,如下所示:

<% @courses.each do |course| %>
  <% banndocid = getbanner(course) %>
  <% docofbanner = course.documents.find(banndocid) %>
  <!--- START OF CARD -->
  <div class="container">
    <%= link_to( course_path(course) ) do %>
      <div class="container card">
        <div class="row" style="display:flex;align-items: center;">
          <div class="col-xs-4 ">
            <%= image_tag( docofbanner.file.url, class: "img img-responsive pull-left center-block", style: "margin-top:1em;margin-bottom:1em;", alt: "icon" ) %>
          </div>
          <div class="col-xs-8">
            <div class="row"><h2><%= course.name %></h2></div>
            <div class="row"><p><%= course.summary %></p></div>
          </div>
        </div>
      </div>
    <% end %>

该功能的结果如下:

Document id: 8, name: "dfgjk", extension: "png", created_at: "2016-01-28 09:05:42", updated_at: "2016-01-28 09:05:42", file: "Screenshot_from_2015-11-22_23-12-36.png", course_id: 3

我希望此函数返回一个数字。

1 个答案:

答案 0 :(得分:1)

在大多数情况下,它不会返回数字。

如果storeval == 1您将返回each的结果。如果它不是图像文件并且storeval > 1,则相同。顺便说一句,如果它不能&lt; 0,并且不是0,并且不是1,您可以打赌它大于1.该代码值得彻底清理。

Boo用于重复图像识别码,这应该是一种方法。我也可能只是使用一个数组,看它是否包含扩展名。

我无法判断您是否真的为== 1和&gt;运行不同的代码1,但粗略地说:

def getbanner(course) #this function is returning array some problem
  storeval = singleton(course.documents)

  if storeval >= 1
    course.documents.each do |document|
      return document.id if image?(document)
    end
  end

  return -99
end
相关问题