Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/solr/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
rails应用中的Ruby方法_Ruby_Ruby On Rails 3 - Fatal编程技术网

rails应用中的Ruby方法

rails应用中的Ruby方法,ruby,ruby-on-rails-3,Ruby,Ruby On Rails 3,我创建了一个方法,它基于作为参数传递的整数进行计算。当我将方法添加到视图时,它只输出最后一个变量 预算.rb(模型) index.html.erb(视图) 这项研究的结果如下: 150.0,这是misc变量的计算 我想一个接一个地输出每个变量。 Ruby只返回方法的最后一行,除非在方法的中间调用返回。也就是说,您希望将计算分离为不同的方法,并逐个调用它们。通过一些元编程,这可以通过以下方式实现 CALCULATION_PERCENTAGES = { reception: 0.5,

我创建了一个方法,它基于作为参数传递的整数进行计算。当我将方法添加到视图时,它只输出最后一个变量

预算.rb(模型)

index.html.erb(视图)


这项研究的结果如下: 150.0,这是misc变量的计算


我想一个接一个地输出每个变量。

Ruby只返回方法的最后一行,除非在方法的中间调用<代码>返回<代码>。也就是说,您希望将计算分离为不同的方法,并逐个调用它们。通过一些元编程,这可以通过以下方式实现

CALCULATION_PERCENTAGES = {
  reception: 0.5,
  ceremony: 0.03,
  clothes: 0.1,
  flowers: 0.1,
  entertain: 0.1,
  photo: 0.12,
  rings: 0.03,
  misc: 0.02
}

class << self
  CALCULATION_PERCENTAGES.each do |cp, weight|
    define_method "#{cp}_value" do |question|
      weight * question
    end
  end
end
计算\u百分比={
接待:0.5,
仪式:0.03,
服装:0.1,
花:0.1,
注:0.1,
照片:0.12,
环数:0.03,
杂项:0.02
}

类< p> Ruby只返回方法的最后一行,除非您在方法的中间调用<代码>返回<代码>。也就是说,您希望将计算分离为不同的方法,并逐个调用它们。通过一些元编程,这可以通过以下方式实现

CALCULATION_PERCENTAGES = {
  reception: 0.5,
  ceremony: 0.03,
  clothes: 0.1,
  flowers: 0.1,
  entertain: 0.1,
  photo: 0.12,
  rings: 0.03,
  misc: 0.02
}

class << self
  CALCULATION_PERCENTAGES.each do |cp, weight|
    define_method "#{cp}_value" do |question|
      weight * question
    end
  end
end
计算\u百分比={
接待:0.5,
仪式:0.03,
服装:0.1,
花:0.1,
注:0.1,
照片:0.12,
环数:0.03,
杂项:0.02
}

类Ruby中的每个方法都返回方法中最后一条语句的值,这就是为什么会得到misc

您的意思是要输出每个变量。您要么需要单独的方法,要么需要返回某种数组、对象或散列来压缩您试图使用的所有数据。例如,这将返回一个哈希:

def self.percent_calculate(question)
{:reception => question * 0.5,
  :ceremony => question * 0.03,
  :clothes => question * 0.1,
  :flowers => question * 0.1,
  :entertain => question * 0.1,
  :photo => question * 0.12,
  :rings => question * 0.03,
  :misc => question * 0.02}
end
然后你可以像这样访问它

calculations = percent_calculate(question)
calculations[:reception]

获取接收值。

Ruby中的每个方法都会返回方法中最后一条语句的值,这就是为什么会得到misc

您的意思是要输出每个变量。您要么需要单独的方法,要么需要返回某种数组、对象或散列来压缩您试图使用的所有数据。例如,这将返回一个哈希:

def self.percent_calculate(question)
{:reception => question * 0.5,
  :ceremony => question * 0.03,
  :clothes => question * 0.1,
  :flowers => question * 0.1,
  :entertain => question * 0.1,
  :photo => question * 0.12,
  :rings => question * 0.03,
  :misc => question * 0.02}
end
然后你可以像这样访问它

calculations = percent_calculate(question)
calculations[:reception]

获取接收值。

这非常好。如果您能理解这一点,您将在理解Ruby方面取得很大进展。@jvnill使用此解决方案,您需要使用
Budget.new.receivement\u value
。在
类中定义方法这非常好。如果您能理解这一点,您将在理解Ruby方面取得很大进展。@jvnill使用此解决方案,您需要使用
Budget.new.receivement\u value
。定义
类中的方法这是Ruby编程的一个非常基本的问题。在使用Rails之前,对您来说了解更多Ruby是非常明智的。对你来说,Rails的神秘或神奇之处将很容易被一年的Ruby学习所理解。这是Ruby编程的一个非常基本的问题。在使用Rails之前,对您来说了解更多Ruby是非常明智的。对于Rails来说,神秘或神奇的事情很容易理解,只要你带上一年的Ruby就行了。如果在类中定义setter,Ruby将返回参数值,无论setter中的代码是什么。例如,
类Foo;def bar=(b)@b=b;返回5;结束;end
将有
Foo.new.bar=7
返回7,而不是5。谢谢你的编辑,锡人。我在结尾时很匆忙。昨天四处走动时,我记得Ruby以任何方法返回最后一条语句时都有一个模糊的异常。如果在类中定义setter,Ruby将返回参数值,无论setter中的代码是什么。例如,
类Foo;def bar=(b)@b=b;返回5;结束;end
将有
Foo.new.bar=7
返回7,而不是5。谢谢你的编辑,锡人。我在最后被催促了。