0

我需要从方法返回到我的 Rails 视图中的多个变量...但是我该怎么做呢?

例如现在我有

def my1
 @price = 1
 @price
end

但我怎么还能返回其他值,例如:

def my1
 @qnt = 2
 @price = 1
 @price, @qnt
end

?

另外我的想法是将它们拆分为字符串

@price + "/-/" + @qnt

然后通过/-/ in view 拆分它们……但这是一种不好的做法……那么我怎么能从一种方法中得到两个或更多变量呢?

4

3 回答 3

2

返回一个数组:

def my1
 qnt = 2
 price = 1
 [price, qnt]
end

那么你可以这样做:

p, q = my1() # parentheses to emphasize a method call
# do something with p and q

选项 2

或者您可以返回一个自定义对象,如下所示:

require 'ostruct'

def my1
 qnt = 2
 price = 1

 OpenStruct.new(price: price, quantity: qnt)
end


res = my1() # parentheses to emphasize a method call

res.quantity # => 2
res.price # => 1
于 2013-01-31T11:43:26.907 回答
0

大批

最简单的方法是返回一个Array

def my1
  @qnt = 2
  @price = 1
  [ @price, @qnt ]
end

price, quantity = my1

哈希

但你也可以返回一个Hash

def my1
  @qnt = 2
  @price = 1
  { :quantity => @qnt, :price = @price
end

return_value = my1

price = return_value[:price]
quantity = return_value[:quantity]
# or
price, quantity = [ return_value[:price], return_value[:quantity] ]

自定义类

或自定义类:

class ValueHolder
  attr_reader :quantity, :price

  def initialize(quantity, price)
    @quantity = quantity
    @price = price
  end
end

def my1
  @qnt = 2
  @price = 1
  ValueHolder.new(@qnt, @price)
end

value_holder = my1

price = value_holder.price
quantity = value_holder.quantity
# or
price, quantity = [ value_holder.price, value_holder.quantity ]

开放结构

您可以像Sergio 提到的那样使用OpenStruct

于 2013-01-31T11:44:23.640 回答
0

使用另一个对象来保存变量并返回它。然后,您可以从该对象访问变量;

于 2013-01-31T11:44:13.833 回答