@result.instance_variable_get("#{@most}_max_count".to_sym)
@most
是一位数字符串,例如i
。此代码位给出错误
`i_max_count' is not allowed as an instance variable name
(我想要访问的是@result.i_max_count
)
编辑: 我想要做的是将@ result.i_max_count的值设置为某个值。
@result的类几乎是空的:
class Result < ActiveRecord::Base
attr_accessor :least, :most
end
答案 0 :(得分:0)
instance_variable_get的参数应该是有效的实例变量名:例如@i_max_count。 所以你可以稍微改变你的代码:
@result.instance_variable_get("@#{@most}_max_count".to_sym)
但是问题标记为“ruby-on-rails”,所以可能你正在使用Hash。这样你就可以尝试(对于@FrederickCheung来说):
@result["#{@most}_max_count"]
甚至这样:
@result.instance_variable_get("@attributes")["#{@most}_max_count"]
或使用eval:
eval("@rezult.#{@most}_max_count")
答案 1 :(得分:0)
实例变量名称始终必须以@ sigil
开头。以下代码段显示了用法
<强> Eg
强>
class Ankit
def initialize(name)
@name = name
end
end
<强> UPDATED:
强>
1.9.3p392 :033 > a = Ankit.new("ankit")
=> #<Ankit:0x007fb3c39c79e8 @name="ankit">
1.9.3p392 :034 > a.instance_variable_get("@name")
=> "ankit"
<强> In your case check 2 things
强>
obj.instance_variable_get("@i_max_count")