我需要从方法返回我的Rails视图中的多个变量......但是我怎么能这样做?
例如现在我有
def my1
@price = 1
@price
end
但我怎么能回复其他的值,如:
def my1
@qnt = 2
@price = 1
@price, @qnt
end
我的想法是将它们分成像
这样的字符串@price + "/-/" + @qnt
然后通过/ - /在视图中将它们分开......但这是一种不好的做法...... 那么我怎么能从一个方法得到两个或更多变量?
答案 0 :(得分:1)
返回一个数组:
def my1
qnt = 2
price = 1
[price, qnt]
end
然后你可以这样做:
p, q = my1() # parentheses to emphasize a method call
# do something with p and q
或者您可以返回自定义对象,如下所示:
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
答案 1 :(得分:0)
使用另一个容纳变量的对象并将其返回。然后,您可以从该对象访问变量;
答案 2 :(得分: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 ]
您可以将OpenStruct用作Sergio mentioned。