如何在rails 3上使用“外部”类?

时间:2013-02-11 16:00:39

标签: ruby-on-rails-3 include require

所以,我有这个ruby文件,我想在我的rails项目中使用它,但我不知道在哪里或如何开始,我已经阅读了包含和要求,一些网站告诉我使用require,一些使用include,甚至使用两者,但就是这样。我想知道在哪里放置必要的代码,如何使用文件的方法以及将文件放在项目目录中的位置,因为我想从视图中调用它,但我不知道这是否是最好的,如果这是一个愚蠢的问题,我很抱歉,但对于我来说,rails仍然是新的。我感谢您提供的所有帮助。谢谢你的时间。

我正在尝试使用的文件是将数字转换为由Faustino Vasquez limon创建的单词的文件,它是一个完整的类:

numeros.rb

class Numlet

  def initialize(numero)

    @numero = numero.to_s.reverse.split("")
    @i = 0
    @j = 0
    @parte1 = []
    @parte2 = []
    @especial = ""
    @numlet = []
    @bandera=0
    @bandera1=0
    @a =[["Uno","Dos","Tres","Cuatro","Cinco","Seis","Siete","Ocho","Nueve"],
      ["Diez","Veinte","Treinta","Cuarenta","Cincuenta","Sesenta","Setenta","Ochenta","Noventa"],       
      ["Ciento","Doscientos","Trescientos","Cuatrocientos","Quinientos","Seiscientos","Setecientos","Ochocientos","Novecientos"]]

  end


  def especial 

    @numlet[@j]  = case @especial
    when "11"then  "Once"
    when "12"then  "Doce"
    when "13"then  "Trece"
    when "14"then  "Catorce"
    when "15"then  "Quice"
    when "16"then  "Dieciseis"
    when "17"then  "Diecisiete"
    when "18"then  "Dieciocho"
    when "19"then  "Diecinueve"
    when "21"then  "Veintiun"
    when "22"then  "Veintidos"
    when "23"then  "Veintitres"
    when "24"then  "Veinticuatro"
    when "25"then  "Veinticinco"
    when "26"then  "Veintiseis"
    when "27"then  "Veintisite"
    when "28"then  "Veintiocho"
    when "29"then  "Veintinueve"
    else return 0
    end
  end

  def repetir

    case @numero.length
    when 0..3 then @parte1[0] = @numero[0..@numero.length]
    when 4..6 then @parte1[0] = @numero[0..2];@parte1[1] = @numero[3..@numero.length]
    when 7..9 then @parte1[0] = @numero[0..2];@parte1[1] = @numero[3..5]; @parte1[2] = @numero[6..@numero.length]
    else return 0
    end
  end

  def convierte

    @bandera1=0
    @i=0
    case @bandera
    when 1 then @numlet[@j]="mil";@j+=1
    when 2 then (@parte2.length==1 and @parte2[0]==1) ? @numlet[@j]="millon" : @numlet[@j]="millones";@j+=1
    end
    @especial = [@parte2[@i+1],@parte2[@i]].to_s
    if especial != 0
      @i+=2
      @j+=1
    else
      if @parte2[@i].to_s =="1"
        @numlet[@j]="Un"
        @i+=1
        @j+=1
      end
    end
    while @i < @parte2.length
      if @parte2[@i].to_i ==0
        @i+=1
        @bandera1+=1
      else
        if @parte2.length != 1 and @bandera1 ==0
          if @i == 1
            @numlet[@j]="y"
            @j+=1
          end
        end
        @numlet[@j] = @a[@i][@parte2[@i].to_i-1]
        if  @i == 2  and @bandera1==2 and @numlet[@j]=="Ciento"
          @numlet[@j]="Cien"
        end
        @j+=1
        @i+=1    
      end
    end
    @bandera+=1
  end

  def termina

    @numlet.reverse.join(" ")
  end

  def a_letra

    if  repetir != 0
      @parte1.each do |@parte2|
        convierte
      end
        print "#{termina}\n"
    else
      print "Este numero no puede ser convertido\n"
    end

   end

end

这就是我想从我的应用程序中使用的内容。谢谢你的时间。

1 个答案:

答案 0 :(得分:0)

由于它是您自己的类,并且您希望在其中一个Rails视图中使用它,因此有许多方法可以使用该代码。

我自己的方式,您可能会或可能不会选择这样做,将该文件包含在lib目录中,然后require将其包含在您想要的视图的帮助文件中把它包括在内。

这将允许您从该文件访问方法和初始化程序,并且您可以在助手中创建方法以在视图上使用。