0
 @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
4

2 回答 2

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("@rezult.#{@most}_max_count")
于 2013-07-04T09:08:36.913 回答
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

  1. @i_max_count 设置了吗?
  2. 如果是,请使用它obj.instance_variable_get("@i_max_count")
于 2013-07-04T09:11:00.590 回答