Ruby on rails 3 正在初始化视图中的模型中定义的方法

Ruby on rails 3 正在初始化视图中的模型中定义的方法,ruby-on-rails-3,methods,initialization,Ruby On Rails 3,Methods,Initialization,我的生成器模型中有一种方法: def generate_pesel r1 = Random.new rok = r1.rand(1800...2299) r2 = Random.new miesiac = r2.rand(1...12) r3 = Random.new if (miesiac == 2)&&((rok%4==0)||(rok%400)) dzien = r3.rand(1...29) else

我的生成器模型中有一种方法:

def generate_pesel
    r1 = Random.new
    rok = r1.rand(1800...2299)
    r2 = Random.new
    miesiac = r2.rand(1...12)
    r3 = Random.new

    if (miesiac == 2)&&((rok%4==0)||(rok%400))
      dzien = r3.rand(1...29)
    else
      dzien = r3.rand(1...28)
    end

    if (rok >= 1800)&&(rok <= 1899)
      miesiac = miesiac + 80
    end 
    if (rok >= 2000)&&(rok <= 2099)
      miesiac = miesiac + 20
    end
    if (rok >= 2100)&&(rok <= 2199)
      miesiac = miesiac + 40
    end
    if (rok >= 2200)&&(rok <= 2299)
      miesiac = miesiac + 60
    end

    data = rok.to_s + miesiac.to_s + dzien.to_s
    puts data
  end
def生成\u pesel
r1=随机。新
rok=r1.兰特(1800…2299)
r2=随机。新
miesiac=r2.rand(1…12)
r3=随机。新
如果(miesiac==2)和((rok%4==0)| |(rok%400))
dzien=r3.兰德(1…29)
其他的
dzien=r3.兰特(1…28)
结束

如果(rok>=1800)和&(rok=2000)和&(rok=2100)和&(rok=2200)和&(rok,您应该不要在视图中直接引用模型

相反,在控制器中创建一个变量

def show
  @generator = Generator.new # or create it however you like
  @data = @generator.generate_pesel
end
然后您可以在视图中引用它

<%= @data %>


我已经这样做了,但我有一个错误:“未定义的方法`generate_pesel` for nil:NilClass”:/您是否实例化了
@generator
?是的,但我是在'new'方法中这样做的,我想在'show'方法中显示@data-我应该再次实例化它吗?是的,这是一个完全独立的方法。您应该再次实例化。当我初始化它时(@generator=generator.new),我有一个错误:“ActiveRecord::StatementInvalid in GeneratorsController#show”
<%= @data %>